2011-11-09 31 views
0

我可以查詢description節點在RSS供給和返回這樣的結果:如何從ATOM源查詢<entry>節點

$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){} 

我缺少什麼?

回答

3

沒有RSS的命名空間,而Atom元素在以下命名空間:

<feed xmlns="http://www.w3.org/2005/Atom"> 

http://www.w3.org/2005/Atom 

您可以通過查看文檔的feed元素,這可能看起來是這樣看這個

在查詢元素之前,您需要先註冊該名稱空間:

$xpath->registerNamespace('a', 'http://www.w3.org/2005/Atom'); 

然後在表達式中使用所選的命名空間前綴:

$items = $xpath->query('/a:feed/a:entry'); 
+1

明白了。現在完美運作。非常感謝@lwburk :-) – laukok