PHP에서 XML 데이터를 처리하려는 경우 데이터를 추출하기 위한 XML 라이브러리가 필요합니다. 예를 들어 RSS 피드 구문 분석 또는 패턴 일치(XHTML 이미지 또는 요소 찾기)가 포함됩니다.
SimpleXML 확장은 XML을 객체로 쉽게 변환하고 요소를 반복할 수 있게 해주는 매우 직관적인 API를 제공합니다. 유일한 단점은 전체 문서를 메모리에 로드하거나 매우 큰 XML 파일을 로드하면 성능 문제가 발생할 수 있다는 것입니다.
성능을 고려한다면 XMLReader를 선택할 수 있습니다. XMLReader는 로드 프로세스 중에 각 노드를 반복하는 대신 전체 문서를 메모리에 로드하는 XML 파서입니다.
아래 코드는 간단한 XML을 사용하여 내 웹사이트에서 최신 RSS를 가져옵니다. 내 서버에서는 서버 호스팅을 지원하고 더 안전하기 때문에 Curl 라이브러리를 사용하여 HTTP 연결을 처리했습니다.
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><?</span><span class="tag-name">php</span><span> </span></span></li><li><span> </span></li><li class="alt"><span>function load_file($url) { </span></li><li><span>$</span><span class="attribute">ch</span><span> = </span><span class="attribute-value">curl_init</span><span>($url); </span></li><li class="alt"><span>#Return http response in string </span></li><li><span>curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); </span></li><li class="alt"><span>$</span><span class="attribute">xml</span><span> = </span><span class="attribute-value">simplexml_load_string</span><span>(curl_exec($ch)); </span></li><li><span>return $xml; </span></li><li class="alt"><span>} </span></li><li><span> </span></li><li class="alt"><span>$</span><span class="attribute">feedurl</span><span> = </span><span class="attribute-value">'http://naveenbalani.com/index.php/feed/'</span><span>; </span></li><li><span>$</span><span class="attribute">rss</span><span> = </span><span class="attribute-value">load_file</span><span>($feedurl); </span></li><li class="alt"><span> </span></li><li><span>foreach ($rss-</span><span class="tag">></span><span>channel-</span><span class="tag">></span><span>item as $item) { </span></span></li> <li class="alt"> <span>echo "</span><span class="tag"><</span><span class="tag-name">h2</span><span class="tag">></span><span>" . $item-</span><span class="tag">></span><span>title . "</span><span class="tag"></</span><span class="tag-name">h2</span><span class="tag">></span><span>"; </span> </li> <li> <span>echo "</span><span class="tag"><</span><span class="tag-name">p</span><span class="tag">></span><span>" . $item-</span><span class="tag">></span><span>description . "</span><span class="tag"></</span><span class="tag-name">p</span><span class="tag">></span><span>"; </span> </li> <li class="alt"><span>} </span></li> <li><span> </span></li> <li class="alt"> <span class="tag">?></span><span> </span> </li> </ol>
http://css.dzone.com/news/parsing-xml-data-php