본문 바로가기
WEB/PHP

[PHP] Open REST API를 활용한 xml 파싱

by 겅아링 2020. 10. 1.
반응형

공공데이터 포털에서 제공하는 전국 병.의원찾기 OpenAPI를 활용한 프로젝트 진행중

API가 제공하는 데이터포맷이 xml이다.

PHP로 REST API를 받아오고 받아온 xml파일을 파싱해보자!

 

 

가져올 데이터

 

 

 

 

 

 

1. curl 을 이용

url을 변수에 담고

요청 인수를 queryParams에 추가해준다.

$ch = curl_init();  //파싱 대상을 담을 $ch변수를 초기화
$url = 'http://apis.data.go.kr/B552657/HsptlAsembySearchService/getHsptlMdcncListInfoInqire'; /*URL*/
$queryParams = '?' . urlencode('ServiceKey') . '=*********'; /*Service Key*/
$queryParams .= '&' . urlencode('Q0') . '=' . urlencode('서울특별시'); //요청인수
                

 

# Windows 환경에서 curl_init 함수가 작동하지 않는다면
php.ini 내부의

;extension=php_curl.dll
의 주석을 풀어주기!! ( ; 제거)

수정후 파일을 저장하고 아파치 서버를 재시작하기!
cmd 에서
httpd -k restart

 

 

2. curl 설정후 실행

실행시킨 결과를 respone에 담는다.

curl은 닫아줌

curl_setopt($ch, CURLOPT_URL, $url . $queryParams); //파싱 대상 설정
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);	//파싱한 결과를 string 형식으로 반환하도록 설정

$response = curl_exec($ch);
curl_close($ch);

 

 

3. 데이터를 추출하기 위해 변환

string 형식으로 가져온 xml 파일을 object 라는 변수에 구조체 형식으로 담아줌

$object = simplexml_load_string($response);
$items = $object->body->items->item;
var_dump($items);

var_dump($items) 실행 결과

 

 

 

 

item의 결과가 배열이기때문에 필요한 데이터만 foreach문으로 반복해서 출력해주면 

foreach ($items as $item) {
	echo($item->dutyName)."<br>";
    echo($item->dutyAddr)."<br>"."<br>";
    }

 

 

실행 결과

 

반응형