如何从ATOM提要</entry>查询<entry>节点

时间:2011-11-09 17:27:55

标签: php xpath rss atom-feed

我可以在 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){}

我错过了什么?

1 个答案:

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