我无法显示第二个媒体:具有simpleXML的内容

时间:2018-07-23 10:24:13

标签: 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'];
 }

1 个答案:

答案 0 :(得分:0)

...->content->......->content[0]->...的简写,所以您只需要该节点的第一个实例即可。

相反,您需要以与遍历->content节点相同的方式遍历->item节点:

foreach ( $item->children('media', true)->content as $content ) 

或者如果出于某种原因您知道自己明确想要第二个节点,则可以要求提供[1]

$second_url = (string)$item->children('media', true)->content[1]->attributes()['url'];

(我将$item[0]替换为$item,因为每次循环时该变量已经代表<item>的单个实例。)