php - 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 循环只返回第一项内容,而不是所有内容。我做错了什么?!
解决方案
为自己找到了解决方案:
foreach($blogposts->channel as $channel) {
foreach($channel->item as $item) {
echo '<h2><a href="'.$item->link.'">'.$item->title.'</a></h2>';
}
}
推荐阅读
- python - Azure 计算机视觉 SDK read_in_stream 始终返回错误请求
- html - Outlook 剥离内联图像
- rtp - 对RTP/RTCP协议的质疑
- reactjs - 使用扩展运算符更新状态
- javascript - RouterLink 在浏览器中工作,但不能在模拟器或设备上工作
- linux - 如何使用第二台 PC 即时替换请求的文件?
- python - Python DiGraph - 动态源数据
- asp.net - ASP.NET`、.NET Framework 和公共语言运行时 (CLR) 的区别和用途是什么?
- reactjs - 在 React Redux 中使用状态更改来触发模态
- java - 如何从 AWS EMR 中的 hadoop 访问 S3 文件夹