我正在尝试使用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中的所有项目并回显所有链接?
答案 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的例子