我可以在 RSS Feed中查询description
个节点并返回如下结果:
$xpath = new DOMXPath($xmlDoc);
$items = $xpath->query('/rss/channel/item/description/..');
foreach($items as $number => $item){}
但是当我从这样的 Atom 提要中查询entry
节点时,它没有返回任何内容(其中我遵循与上面相同的模式):
$xpath = new DOMXPath($xmlDoc);
$items = $xpath->query('/feed/entry/..');
foreach($items as $number => $item){}
我错过了什么?
答案 0 :(得分:3)
没有RSS命名空间,而Atom元素位于以下命名空间中:
http://www.w3.org/2005/Atom
您可以通过查看文档的feed
元素来看到这一点,该元素可能如下所示:
<feed xmlns="http://www.w3.org/2005/Atom">
在查询其中的元素之前,您需要注册此命名空间:
$xpath->registerNamespace('a', 'http://www.w3.org/2005/Atom');
然后在表达式中使用所选的名称空间前缀:
$items = $xpath->query('/a:feed/a:entry');