我正在尝试使用xpath解析blogspot提要,但它似乎并没有使用我尝试的任何东西。我不确定是不是因为命名空间或什么,但我希望有人可以帮助我。这是代码:
$xml = simplexml_load_file('http://feeds.feedburner.com/blogspot/MKuf');
$next = $xml->xpath("//link[@rel='next']");
print_r($next);
这只是返回一个空数组,它不应该是。我尝试过只做链接或只是输入,它仍然是空的。唯一可以运行它的是*。任何帮助表示赞赏。
答案 0 :(得分:10)
就像您在评论中已经说过的那样,该文档有一个默认命名空间,您必须先注册,然后才能使用XPath进行查询。
由于链接的副本仅显示如何使用DOM,我将添加一个SimpleXml示例
$feed = simplexml_load_file('http://feeds.feedburner.com/blogspot/MKuf');
$feed->registerXPathNamespace('f', 'http://www.w3.org/2005/Atom');
foreach ($feed->xpath('//f:link[@rel="next"]') as $link) {
var_dump($link);
}
手册页:http://de.php.net/manual/de/simplexmlelement.registerxpathnamespace.php
答案 1 :(得分:3)
正如Gordon所说,您需要注册XML文档的默认命名空间,如下所示:
$xml->registerXPathNamespace('default', 'http://www.w3.org/2005/Atom');
然后使用default
前缀来引用普通元素:
$next = $xml->xpath("//default:link[@rel='next']");
较新的版本可能允许您定义默认(''
)命名空间。有关详细信息,请参阅http://www.qc4blog.com/?p=281。