首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历SimpleXMLElement对象只需2个步骤

循环遍历SimpleXMLElement对象只需2个步骤
EN

Stack Overflow用户
提问于 2010-10-28 00:46:30
回答 1查看 587关注 0票数 2

我有一个SimpleXMLElement,我使用curl读取了它的XML文件。为了从中获取值,我似乎需要使用嵌套的foreach,但在类似的情况下,我可以一下子做到这一点。现在我真的很好奇为什么这个不起作用:

它是美味的RSS提要;

代码语言:javascript
复制
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访问所有链接:

代码语言:javascript
复制
foreach ($delicious_res as $item) {
    foreach ($item->item as $entry){
        echo $entry->link."<br />";
    }
}

但我不明白为什么我不能使用这个(我可以在另一种情况下使用)

代码语言:javascript
复制
foreach ($delicious_res->item as $item) {
        echo $entry->link."<br />";
}

为了从总体上更好地理解SimpleXML,我真的很想了解其中的原因;)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-28 01:34:54

你必须使用:

代码语言:javascript
复制
foreach($delicious_res->channel->item as $item) {
    print_r($item);
}

因为项的集合在<rss><channel>标记内( <rss>标记可以省略,因为它是文档的根节点)。

注意:如果你没有做任何花哨的事情,你可能不需要使用curl来获取rss need内容。只需使用带有url的simplexml_load_file作为参数:

代码语言:javascript
复制
$delicious_res = simplexml_load_file('http://path-to-your/file.xml"');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4035583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档