php的xml问题

时间:2011-01-31 15:47:02

标签: php xml

我正在尝试使用xml文件并从中检索所有链接。到目前为止我有:

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

这可以在xml中打印item[3]的单个标题链接。但正如你所看到的那样,它是2级深度。然后下一个将在channel[0]->item[4]->link。没有频道1,只有channel[0]

互联网上的所有示例仅涉及1级深度。他们都使用foreach循环,但我不确定是否可以在这里使用...

如何循环浏览xml中的所有项目并回显所有链接?

3 个答案:

答案 0 :(得分:0)

我认为您需要一个DOM解析器,它允许您将xml作为结构化层次结构加载,然后使用像getElementById http://php.net/manual/en/domdocument.getelementbyid.php这样的函数来解析xml并获取您想要的特定项目在任何深度。

如果您提供xml文件的结构,我可以帮助您使用DOM函数。

答案 1 :(得分:0)

尝试

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

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

答案 2 :(得分: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的例子