2011-01-31 3 views
0

私はxmlファイルを使用して、そこからすべてのリンクを取得しようとしています。これまでのところ、私は持っています:phmlで問題があります

$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

はPS

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'); 

をお試しください:あなたのxml

のいくつかの例を記載してください