PHP

[PHP] 공공데이타포탈 XML 자료 파싱하기


[PHP] 공공데이타포탈 XML 자료 파싱하기


  2022-10-13  466 View 공개

외부 XML 주소를 읽어서 PHP 상에서 파싱하는 작업은 크게 두 단계로 나뉩니다.

① 외부 XML 데이터 가져오기
② XML 데이터 파싱하기
아래는 간단한 예제를 통해 각 단계를 설명한 뒤, 공공데이타 포탈에서 XML 자료를 파싱하는 방법을 소개한다.

 외부 XML 데이터 가져오기

file_get_contents() 함수나 cURL을 사용하여 외부 XML 주소의 데이터를 가져올 수 있습니다. 여기서는 file_get_contents() 함수를 사용하는 방법을 설명하겠습니다.
PHP
$xmlUrl = "https://example.com/sample.xml";  // 외부 XML 주소
$xmlData = file_get_contents($xmlUrl);

 XML 데이터 파싱하기

SimpleXML을 사용하면 XML 데이터를 쉽게 파싱할 수 있습니다.
PHP
$xml = simplexml_load_string($xmlData);
이제 $xml 객체를 사용하여 XML 데이터에 접근할 수 있습니다. 예를 들어 XML에 <item><name>Sample Name</name></item> 구조가 있다면, 다음과 같이 파싱할 수 있습니다.
-
foreach ($xml->item as $item) {
    echo $item->name;
}

 PHP 예제코드

PHP
$xmlUrl = "https://example.com/sample.xml";  // 외부 XML 주소
$xmlData = file_get_contents($xmlUrl);
 
$xml = simplexml_load_string($xmlData);
 
foreach ($xml->item as $item) {
    echo $item->name . "<br>";
}
❶ 외부 URL로부터 데이터를 가져올 때, allow_url_fopen 옵션이 php.ini에서 활성화되어 있어야 file_get_contents() 함수가 작동합니다.
❷ file_get_contents()가 작동하지 않거나 비효율적인 경우에는 cURL을 사용하여 데이터를 가져올 수 있습니다.
❸ 외부 데이터를 가져올 때 항상 안전을 위한 처리(예: XML의 유효성 검사)가 필요합니다.

공공데이타포털 XML포맷 예시



 공공데이타 XML 파싱 예제

PHP
$ch = curl_init();
$url = 'http://apis.data.go.kr/1262000/SafetyNewsList/getCountrySafetyNewsList'; 
$queryParams = '?' . urlencode('ServiceKey') . '시디키값'; 
$queryParams .= '&' . urlencode('numOfRows') . '=' . urlencode('10'); 
$queryParams .= '&' . urlencode('pageNo') . '=' . urlencode('1'); 
 
/*
$queryParams .= '&' . urlencode('title1') . '=' . urlencode('입국'); 
$queryParams .= '&' . urlencode('title2') . '=' . urlencode('코로나'); 
$queryParams .= '&' . urlencode('title3') . '=' . urlencode('운항'); 
$queryParams .= '&' . urlencode('title4') . '=' . urlencode('항공권'); 
$queryParams .= '&' . urlencode('title5') . '=' . urlencode('격리'); 
*/
 
curl_setopt($ch, CURLOPT_URL, $url . $queryParams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($ch);
curl_close($ch);
 
$xml = simplexml_load_string($response);
 
//echo $xml->body->items->item[0]->content;
 
 
    for ($i=0;$i$xml->body->items->item);$i++) {
        $title = $xml->body->items->item[$i]->title;
        $content = $xml->body->items->item[$i]->content;
        $content = nl2br($content);
?>
<ul>
    <li><strong>=$title?>strong>li>
    <li>=$content?>li>
ul>
    }
?>
여기서는 curl 을 이용하여 GET 방식으로 처리했다.
simplexml_load_string 를 이용하면 간단히 처리할 수 있다.

아주 직관적이라 이해하기 어렵진 않을것 같다.

Tags  #XML파싱  #공공데이타포탈  



🚩 PHP 글 모음 (총 56 건)

[PHP] 공공데이타포탈 XML 자료 파싱하기

Last Updated : 2023-09-30
#XML파싱 #공공데이타포탈

이메일 존재여부 확인

Last Updated : 2023-09-29

[PHP] 30분뒤 자동 로그아웃

Last Updated : 2023-09-29

[PHP] 타임존을 한국시간으로 설정하는 방법

Last Updated : 2023-09-29
#PHP #TIMEZONE

[PHP] 동시에 한 PC 에서만 로그인을 제한하는 방법

Last Updated : 2023-09-29
#php

[PHP] mb_substr 로 한글 문자열을 깨지지 않고 안전하게 분리하기

Last Updated : 2023-09-29
#PHP #mb_substr #한글문자열자르기