我正在尝试从以XML结构输出数据的API中获取数据。
它有很多分支,看起来很复杂。这是结构,
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
<channel>
<item>
<title>Test Video</title>
<media:content url="http://localhost/video/test.mp4" type="video/x-flv" duration="6474"/>
</item>
</channel>
</rss>
我还想知道如果它有更多的分支,例如视频描述,类型......我怎么能抓住它们?在媒体内部标签中它有多个值,我该如何单独获取它们?示例:如何在媒体标记中获取内容网址?
答案 0 :(得分:2)
我意识到你的XML(第1行)中有一个名称空间,这样就可以了:
$xml = simplexml_load_string($x); // assuming your XML in $x
$contents = $xml->xpath("//media:content");
foreach ($contents as $content) echo $content['url'],"<br />";
查看现场演示:http://codepad.viper-7.com/7bJf9Q
替代方案:寻找namespace
和simplexml
。
答案 1 :(得分:1)
是的,您可以使用SimpleXMl。 <media:content>
指的是命名空间(http://search.yahoo.com/mrss/)。所以你可以使用:
$string = <<<XML
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
<channel>
<item>
<title>Test Video</title>
<media:content url="http://localhost/video/test.mp4" type="video/x-flv" duration="6474"/>
</item>
</channel>
</rss>
XML;
$xml = simplexml_load_string($string);
//var_dump($xml);
echo $xml->channel->item->title;
$contentAttr = $xml->channel->item->children('media', true)->content->attributes();
echo $contentAttr['url'];
exit;
答案 2 :(得分:0)
在php.net上查看simplexml
或DOMDocument
它们提供了解析XML数据的功能
<media:content>
中的url称为属性,上述函数也提供了拉取属性的方法。
我建议您尝试使用我已经提供的信息,如果您需要帮助,请返回SO,好吗?
玩得开心!