WEB/PHP

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

겅아링 2020. 10. 1. 18:01
반응형

공공데이터 포털에서 제공하는 전국 병.의원찾기 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>";
    }

 

 

실행 결과

 

반응형