2009-09-21 91 views
1

我试图使用PHP在列表中打印RSS 2.0 feed中的所有<title><description>元素。我可以简单地使用这些元素:$rss->xpath('rss/channel/item/title | rss/channel/item/description')但我想使用它有点不同。

我想用PHP使用foreach语句像这样通过所有<item>元素进行迭代:

<?php 
foreach($xml->xpath('/rss/channel/item') as $item){ 
    print_r($item->xpath('title')); 
} 
?> 

$item->xpath('title')不会返回title元素中的文本,但它返回一个数组:

Array 
(
    [0] => SimpleXMLElement Object 
    (
     [0] => Ubuntu 10.04 LTS 'Lucid Lynx' laat Gnome 3 nog links liggen 
    ) 
) 

为什么它返回一个数组而不是元素内的文本?

回答

1

尝试:

foreach($xml->xpath('/rss/channel/item') as $item) 
{ 
    print_r($item->title); // This pulls out the simpleXML object 
    print_r((string)$item->title); // This pulls out the string as expected 
} 

没有必要使用SimpleXML时使用另一个XPath查询,所述第一的XPath将拔出的SimpleXML对象匹配XPath的阵列。然后,您需要做的就是访问节点,就好像它是SimpleXML对象的属性一样。如果您希望将它用作字符串,则需要将属性前面的(string)放在一个字符串中。

-1

尝试'rss/channel/item。' (带点)

+0

Hi Powtac, 该点没有返回结果...无论如何它在哪里? ^^ – Harmen 2009-09-21 15:23:21

0

xpath函数返回与路径匹配的元素数组。所以这就是为什么你用一个元素获得外部数组。你不想用xpath来获得标题。你想从元素中获得title属性。只需直接访问它。

0

尝试:

$item->xpath('string(title)')