2011-01-31 7 views
0

XML 파일을 사용하고이 파일에서 모든 링크를 검색하려고합니다. 지금까지 나는 가지고있다 :PHP에서 xml 문제가 발생했습니다.

$xmlHeadline = $xml->channel[0]->item[3]->link; 
print($xmlHeadline); 

이것은 item[3]를위한 단 하나 표제 연결을 xml에서 인쇄하기 위하여 좋다. 그러나 당신이 볼 수 있듯이 그것은 2 레벨 깊이입니다. 그런 다음 다음은 channel[0]->item[4]->link입니다. 채널 1은 없으며 단지 channel[0]입니다.

인터넷의 모든 예제는 1 단계 만 처리합니다. 그들은 모두 foreach 루프를 사용했지만 여기에 사용할 수 있는지 확실하지 않습니다 ...

xml의 모든 항목을 순환시켜 모든 링크를 에코하려면 어떻게해야합니까?

답변

0

foreach ($xml->channel[0]->item as $item) { 
    echo $item->link; 
} 

또는

foreach ($xml->xpath('/channel/item/link') as $link) { 
    echo $link; 
} 
0

DOM 파서를 사용하면 XML을 구조적 계층 구조로로드 한 다음 getElementByIdhttp://php.net/manual/en/domdocument.getelementbyid.php과 같은 함수를 사용하여 xml을 구문 분석하고 원하는 깊이로 원하는 특정 항목을 얻을 수 있습니다.

xml 파일의 구조를 제공하면 DOM 기능의 특정 사용을 도울 수 있습니다.

0
$str = '<channels><channel> 
<item><link>google.com</link></item> 
<item><link>google.com.cn</link></item> 
<item><link>google.com.sg</link></item> 
<item><link>google.com.my</link></item> 
</channel></channels>'; 
$xml = simplexml_load_string($str); 
$objs = $xml->xpath('//channel/item/link'); 

는 PS보십시오 :이 XML의 몇 가지 예를 기입하십시오

관련 문제