관리 메뉴

웹개발자의 기지개

[php] xml 파싱 - simplexml_load_string 이용하기 (GET) 본문

PHP

[php] xml 파싱 - simplexml_load_string 이용하기 (GET)

http://portfolio.wonpaper.net 2020. 6. 14. 09:11

외부 xml 주소를 읽어서 php 상으로 파싱하는 방법을 알아보자.

 

코로나 관련 외부로 공개중인 xml 소식지를 이용해 보았다. 

 

[공공 데이터 포탈 https://www.data.go.kr] 참고해 보기 바란다.

 

[ 실제 xml 페이지 화면 ]

body 안에 items 안에 item 들이 기사 내용으로 주욱 살펴볼 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?
$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<sizeof($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>
<?
    }
?>
cs

여기서는 curl 을 이용하여 GET 방식으로 처리했다.

simplexml_load_string 를 이용하면 간단히 처리할 수 있다.

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

 

[ 결과화면 ]

 

 

 

 

Comments