我正在尝试使用PHP在列表中打印RSS 2.0 Feed的所有<title>
和<description>
元素。我可以使用$rss->xpath('rss/channel/item/title | rss/channel/item/description')
简单地获取这些元素,但我想使用它稍微不同。
我想使用PHP来使用<item>
语句迭代所有foreach
元素,如下所示:
<?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
)
)
为什么它返回一个数组而不是元素中的文本?
答案 0 :(得分: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将提取与XPath匹配的simpleXML对象数组。然后,您需要做的就是访问节点,就好像它是SimpleXML对象的属性一样。如果您希望将其用作字符串,则需要将(string)
置于属性前面,将其强制转换为一个字符串。
答案 1 :(得分:0)
xpath
函数返回与路径匹配的元素数组。这就是为什么你得到一个元素的外部数组。您不想使用xpath
来获取标题。您想从元素中获取title属性。只需直接访问它。
答案 2 :(得分:0)
尝试:
$item->xpath('string(title)')
答案 3 :(得分:-1)
试试'rss / channel / item。' (带点)