我有一个SimpleXMLElement,我使用curl读取了它的XML文件。为了从中获取值,我似乎需要使用嵌套的foreach,但在类似的情况下,我可以一下子做到这一点。现在我真的很好奇为什么这个不起作用:
它是美味的RSS提要;
SimpleXMLElement Object
(
[title] => Delicious/chrisvdberge
[link] => http://www.delicious.com/chrisvdberge
[description] => bookmarks posted by chrisvdberge
[item] => Array
(
[0] => SimpleXMLElement Object
(
[title] => Diagrammr
[pubDate] => Thu, 06 May 2010 12:40:07 +0000
[guid] => http://www.delicious.com/url/2fc2ed0e870ec9d001b645dfaed0e771#chrisvdberge
[link] => http://www.diagrammr.com/
[comments] => http://www.delicious.com/url/2fc2ed0e870ec9d001b645dfaed0e771
[source] => chrisvdberge's bookmarks
[category] => Array
(
[0] => tagthis
[1] => visualization
[2] => diagrams
)
)
[1] => SimpleXMLElement Object
(
[title] => Ignite Toronto 2: Ryan Coleman - Designing for visual efficiency on Vimeo
[pubDate] => Mon, 18 Jan 2010 08:05:06 +0000
[guid] => http://www.delicious.com/url/9a0de307f3f37baaa25ad20b4dbc4537#chrisvdberge
[link] => http://vimeo.com/8317770
[comments] => http://www.delicious.com/url/9a0de307f3f37baaa25ad20b4dbc4537
[source] => chrisvdberge's bookmarks
[category] => Array
(
[0] => tagthis
[1] => vizthink
)
)等。
我可以使用嵌套的foreach访问所有链接:
foreach ($delicious_res as $item) {
foreach ($item->item as $entry){
echo $entry->link."<br />";
}
}但我不明白为什么我不能使用这个(我可以在另一种情况下使用)
foreach ($delicious_res->item as $item) {
echo $entry->link."<br />";
}为了从总体上更好地理解SimpleXML,我真的很想了解其中的原因;)
发布于 2010-10-28 01:34:54
你必须使用:
foreach($delicious_res->channel->item as $item) {
print_r($item);
}因为项的集合在<rss>和<channel>标记内( <rss>标记可以省略,因为它是文档的根节点)。
注意:如果你没有做任何花哨的事情,你可能不需要使用curl来获取rss need内容。只需使用带有url的simplexml_load_file作为参数:
$delicious_res = simplexml_load_file('http://path-to-your/file.xml"');https://stackoverflow.com/questions/4035583
复制相似问题