首页 > 解决方案 > PHP解析具有多个孩子的xml文件:我只得到第一个

问题描述

我正在使用 foreach 循环解析带有“file_get_contents”的 XML 文件。在 XML 文件中有几个孩子 () 我想列出所有这样的:

<a href="https://rssdomain.com/the-impact-of-brexit">The impact of Brexit</a>
<a href="https://rssdomain.com/new-rules-recording">New Rules on Recording</a>

我得到的 XML 文件:

<rss version="2.0">
<channel>
<title>RSS FEED</title>
<link>https://rssdomain.com</link>
<description>
The description of this rss-feed
</description>
<language>en-us</language>
<pubDate>Thu, 07 Mar 2019 12:51:21 GMT</pubDate>
<dc:date>2019-03-07T12:51:21Z</dc:date>
<dc:language>en-us</dc:language>

<item>
    <title>The impact of Brexit</title>
    <link>https://blog.rssdomain.com/the-impact-of-brexit</link>
    <description>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</description>
    <category>Author Max Muster</category>
    <category>Author Another Name</category>
    <pubDate>Thu, 07 Mar 2019 12:51:22 GMT</pubDate>
    <author>email@domain.com (Max Muster)</author>
    <guid>https://blog.rssdomain.com/the-impact-of-brexit</guid>
    <dc:date>2019-03-07T12:51:22Z</dc:date>
</item>
<item>
    <title>New Rules on Recording</title>
    <link>https://blog.rssdomain.com/new-rules-recording</link>
    <description>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</description>
    <category>Author Max Muster</category>
    <category>Author Another Name</category>
    <pubDate>Tue, 26 Jan 2015 18:27:00 GMT</pubDate>
    <author>email@domain.com (Max Muster)</author>
    <guid>https://blog.rssdomain.com/new-rules-recording</guid>
    <dc:date>2015-01-26T18:27:00Z</dc:date>
</item>

</channel>
</rss>

这是我的 PHP 代码:

$source = 'https://rssdomain.com/feed.xml';
    $xmlstr = file_get_contents($source);
    $blogposts = new SimpleXMLElement($source,null,true);

    foreach($blogposts as $item) {
      echo '<h2><a href="'.$item->item->link.'">'.$item->item->title.'</a></h2>';
      // output:  <a href="https://rssdomain.com/the-impact-of-brexit">The impact of Brexit</a>
    }

...我不知道为什么这个 foreach 循环只返回第一项内容,而不是所有内容。我做错了什么?!

标签: phpxmlparsexml

解决方案


为自己找到了解决方案:

foreach($blogposts->channel as $channel) {
    foreach($channel->item as $item) {
        echo '<h2><a href="'.$item->link.'">'.$item->title.'</a></h2>';
    }
}

推荐阅读