php - 我无法显示第二个媒体:使用 simpleXML 的内容
问题描述
似乎我无法检索第二个媒体:内容,即上面有 的width="460"
那个。
<item>
<title>...</title>
<link>...</link>
<description>...</description>
<category domain="...">title</category>
<category domain="...">Benjamin Netanyahu</category>
<category domain="...">Judaism</category>
<category domain="...">Religion</category>
<pubDate>Mon, 23 Jul 2018 07:00:27 GMT</pubDate>
<media:content width="140" url="**(i can retrieve this image)**">
<media:credit scheme="urn:ebu">Photograph: Author 1</media:credit>
</media:content>
<media:content width="460" url="**(but i cant retrieve this one)**">
<media:credit scheme="urn:ebu">Photograph: Author 2</media:credit>
</media:content>
<dc:creator>Touma-Sliman</dc:creator>
<dc:date>2018-07-23T07:00:27Z</dc:date>
</item>
这是我当前的代码:
foreach ($xml->channel->item as $key=>$item)
{
$results = (string)$item[0]->children('media', true)->content->attributes()['url'];
}
解决方案
...->content->...
是 的简写...->content[0]->...
,因此您只需要请求该节点的第一个实例。
相反,您需要以与遍历->content
节点完全相同的方式遍历->item
节点:
foreach ( $item->children('media', true)->content as $content )
或者,如果出于某种原因您知道您明确想要第二个节点,您可以要求 item [1]
:
$second_url = (string)$item->children('media', true)->content[1]->attributes()['url'];
(我已替换$item[0]
为,因为该变量已经代表循环中每次$item
的单个实例。)<item>
推荐阅读
- c++ - 任何令人满意的迭代器递归来替换 $a[i]=b[i]*c[i]$ 类型的 for 循环
- spring - Spring Cloud Configuration Client 不刷新属性
- applescript - AppleScript 中的 CR 与 LF
- elasticsearch - Elasticsearch:桶排序聚合+按字母字段排序
- c# - 读取 Excel 文件时出现问题
- html - 如果特定的 id-text,Firefox 中的表单不显示,但在源代码中存在
- javascript - 在 Mocha 中运行一个简单的测试
- reactjs - Jest + Enzyme 测试元素是否专注于
- java - servlet 应用程序中特定于环境的配置属性文件
- google-cloud-speech - 谷歌语音 API 问题