Как запросить узлы <entry> из фида ATOM

Я могу запросить узлы description в RSS- канале и вернуть результат следующим образом:

 $xpath = new DOMXPath($xmlDoc); $items = $xpath->query('/rss/channel/item/description/..'); foreach($items as $number => $item){} 

Но он ничего не возвращает, когда я запрашиваю узлы entry из фида Atom, подобные этому (в котором я следую тому же шаблону, что и в RSS выше):

 $xpath = new DOMXPath($xmlDoc); $items = $xpath->query('/feed/entry/..'); foreach($items as $number => $item){} 

Что мне не хватает?

Нет пространства имен 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');