0
간단한 XML에서 XPath 요소를 사용하여 XML 문서를 구문 분석하려고합니다. 그러나 (때 last.fm API의 항목 "U2"검색) 아래에서이 스크립트는 반환PHP XML XPath - 중복 노드를 중지하십시오
승객 승객은 승객 보노의 U2와 그린 데이 승객 보노의 U2와 그린 데이 (Green Day) R.E.M.을 보노 승객 Bono U2와 Green Day R.E.M. INXS
반복되는 노드가 있습니다. 중복/반복 노드가 표시되는 것을 막을 수있는 방법이 있습니까?
(PHP 코드)
$xmlmusic = new SimpleXMLElement($result);
$releases = $xmlmusic->xpath('artist/similar/artist');
foreach ($releases as $artist) {
$artistResult .= $artist->name . PHP_EOL;
echo $artistResult;}
(XML 문서)
<?xml version="1.0" encoding="utf-8"?>
<lfm status="ok">
<artist>
<name>U2</name>
<mbid>704acdbb-1415-4782-b0b6-0596b8c55e46</mbid>
<url>http://www.last.fm/music/U2</url>
<image size="small">http://userserve-ak.last.fm/serve/34/107345.jpg</image>
<streamable>1</streamable>
<stats>
<listeners>2613654</listeners>
<playcount>96947986</playcount>
</stats>
<similar>
<artist>
<name>Passengers</name>
<url>http://www.last.fm/music/Passengers</url>
<image size="small">http://userserve-ak.last.fm/serve/34/4826014.jpg</image>
</artist>
그것은 어떤 결과를 반환하지 않은, 그래서 나는 배열의 인쇄 시도 : $ xmlmusic = 새로운 SimpleXMLElement ($ 결과); $ releases = $ xmlmusic-> xpath ('artist/similar/artist'); $ seen = array(); foreach ($ releases as $ artist) { if (! isset ($ artist [> artist-> name])) { $ seen [$ artist-> name] = true; } } print_r ($ seen); 그러나 빈 배열이 반환되는 이유는 무엇입니까? – MattHeywood