1

我正在尝试从以 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>

我也想知道如果它有更多的分支,比如视频描述,类型..我怎样才能抓住它们?并且在媒体标签内部它有多个值,我怎样才能分别获取它们?示例:如何获取媒体标签内的内容 url

4

3 回答 3

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

替代方案:寻找namespacesimplexml

于 2013-04-10T21:39:22.900 回答
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;

还可以查看使用 SimpleXML 读取 RSS 提要

于 2013-04-10T23:03:04.800 回答
0

看看simplexmlDOMDocument在 php.net。
这些提供解析 XML 数据的函数。
里面的url<media:content>叫做属性,上面的函数也提供了拉取属性的方法。

我建议您尝试使用我提供的信息,并在需要帮助时返回 SO,好吗?

尝试愉快!

于 2013-04-10T15:59:55.550 回答