php 无法获取媒体:内容数据

wwwo4jvm  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(165)
$rss = simplexml_load_file('URL');

    foreach ($rss->channel->item as $item) {
         $title = strip_tags($item->title); 
         $desc = strip_tags($item->description); 
    }

我的XML数据Like:

<title> <![CDATA[ Title data here ]]></title>
<description><![CDATA[ Description here ]]> </description>

<media:group>
<media:content url="https://myurl.com/poster.jpg?width=1920" medium="image" type="image/jpeg"/>
<media:content url="https://myurl.com/videos/erer-sdfer.mp4" duration="100" width="320" height="180" fileSize="4234581" 
</media:group>

在上面的XML中,我可以检索标题和描述信息,但我需要从media:group -〉media:content节点访问“url”属性值。请帮助我找到它。

wmtdaxz3

wmtdaxz31#

这些元素使用不同的命名空间。在XML文档中查找xmlns:media命名空间定义。该值是实际的命名空间。它应该是http://search.yahoo.com/mrss/在这种情况下-媒体RSS。
SimpleXML使用当前元素的默认名称空间,直到您选择另一个名称空间。SimpleXMLElement::children()SimpleXMLElement::attributes()方法有一个名称空间参数。

// define a dictionary for the used namespaces
$xmlns = [
    'mrss' => 'http://search.yahoo.com/mrss/'
];

$rss = simplexml_load_string(getXMLString());

foreach ($rss->channel->item as $item) {
   $title = strip_tags($item->title); 
   $description = strip_tags($item->description); 
   var_dump($title, $description);
   // fetch elements of the specified namespace
   foreach ($item->children($xmlns['mrss'])->group->content as $content) {
       var_dump((string)$content->attributes()->url);
   }
}

function getXMLString() {
    return <<<'XML'
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <item>
      <title> <![CDATA[ Title data here ]]></title>
      <description><![CDATA[ Description here ]]> </description>
    
      <media:group>
        <media:content url="https://myurl.com/poster.jpg?width=1920" medium="image" type="image/jpeg"/>
        <media:content url="https://myurl.com/videos/erer-sdfer.mp4" duration="100" width="320" height="180" fileSize="4234581"/>
      </media:group>
    </item>
  </channel>
</rss>
XML;
}

输出:

string(18) "  Title data here "
string(19) " Description here  "
string(39) "https://myurl.com/poster.jpg?width=1920"
string(39) "https://myurl.com/videos/erer-sdfer.mp4"

相关问题