[PHP] PHP 를 이용하여 XML 파싱하는 간단 예제 feat. cURL

Summary

  1. PHP 에서 xml 문서를 파싱하기 위해서는
  2. cURL을 이용하면 됩니다.
  3. cURL_setpot 으로 파싱 대상과 String 으로 추출 하도록 설정하고,
  4. cURL_exec 로 추출을 실시하고,
  5. String 으로 추출된 결과물을 simplexml_load_string 으로 구조체로 변환한 후,
  6. 구조체에서 원하는 데이터를 가져오면 됩니다.

PHP 를 통해서 xml 문서를 파싱하여 원하는 정보를 표시하는 방법을 알아봅시다. 간단한 예제를 한줄한줄 해석하는 방식이 편하겠네요. 파싱 대상이 되는 xml 문서의 주소는 아래와 같습니다.

http://suggestqueries.google.com/complete/search?output=toolbar&q=korea

구글이 제공하는 연관검색어 xml 파일인데, korea 라는 키워드의 연관 검색어를 cURL 을 이용해 뽑아내어볼 예정입니다. 예제는 아래와 같습니다. 미리 선수치자면, 저는 문돌이라서 코딩 용어의 사용이 미숙하니 대충 봐주세요.

$url = 'http://suggestqueries.google.com/complete/search?output=toolbar&q=korea';
$ch = cURL_init();

cURL_setopt($ch, CURLOPT_URL, $url);
cURL_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response = cURL_exec($ch);
cURL_close($ch); 

$object = simplexml_load_string($response);
$suggest0 = $object->CompleteSuggestion[0]->suggestion["data"];

echo $suggest0;

변수에 주소 담기

$url = 'http://suggestqueries.google.com/complete/search?output=toolbar&q=korea';

먼저 파싱의 대상이 되는 xml 파일의 주소를 변수에 담습니다. 그래야 나중에 꺼내 사용하기 편하니까요.

파싱 대상을 담을 구조체 초기화

$ch = cURL_init();

ch 라는 변수에 파싱 대상을 담을 것입니다. 그러기 위해서 초기화 해줍니다.

옵션 지정하기

cURL_setopt($ch, CURLOPT_URL, $url);

변수 ch 에 파싱 대상이 url 변수에 담긴 주소에 있다고 설정해줍니다.

cURL_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

그리고 파싱한 결과를 string 형식으로 반환하도록 설정해줍니다. cURL 의 옵션 설정에 대한 자세한 내용은 php.net을 확인 하세요.

결과물 담기

$response = cURL_exec($ch);
cURL_close($ch); 

이제 실제로 ch 변수에서 이전에 설정한대로 파싱을 실시해 response 라는 변수에 담습니다. 그리고 ch 는 이제 더이상 필요하지 않으므로 닫아버립니다.

실질적인 데이터 추출

xml 파일 자체를 추출하는데 성공 했으니, 그 내용을 가져와 보도록 합니다.

$object = simplexml_load_string($response);
$suggest = $object->CompleteSuggestion[0]->suggestion["data"];

string 형식으로 가져온 xml 파일을 object 라는 변수에 구조체 형식으로 담아줍니다. 그리고 해당 구조체의 가장 첫번째 아이템의 data 라는 attribute 의 내용을 가져와 suggest0 라는 변수에 담아줍니다.

echo $suggest;

이제 마지막으로 suggest 를 출력합니다.

내용이 길어졌지만 차근차근 보면 어려울게 없습니다.

끝.