Tit*_*tan 6 php xml xml-namespaces domdocument
我正在尝试解析youtube播放列表字段.
该网址为:http://gdata.youtube.com/feeds/api/playlists/664AA68C6E6BA19B?v = 2
我需要:标题,视频ID和默认缩略图.
我可以很容易地获得标题,但是当涉及到嵌套元素时,我有点迷失
$data = new DOMDocument();
if($data->load("http://gdata.youtube.com/feeds/api/playlists/664AA68C6E6BA19B?v=2"))
{
foreach ($data->getElementsByTagName('entry') as $video)
{
$title = $video->getElementsByTagName('title')->item(0)->nodeValue;
$id = ??
$thumb = ??
}
}
Run Code Online (Sandbox Code Playgroud)
这是XML(我已经删除了与此示例无关的元素)
<entry gd:etag="W/"AkYGSXc9cSp7ImA9Wx9VGEk."">
<title>A GoPro Weekend On The Ice</title>
<media:group>
<media:thumbnail url="http://i.ytimg.com/vi/yk6wkfVNFQE/default.jpg" height="90" width="120" time="00:02:07" yt:name="default" />
<yt:videoid>yk6wkfVNFQE</yt:videoid>
</media:group>
</entry>
Run Code Online (Sandbox Code Playgroud)
我需要来自thumbnail-default的"videoid"和"url"
谢谢!
与getElementsByTagName()
您已经使用的类似,要访问命名空间元素(可识别namespace:element-name
),您可以使用该getElementsByTagNameNS()
方法.
文档(上面链接)应该为您提供如何使用它的技术内容,足以说它将类似于以下(也使用getAttribute()
).
$yt = 'http://gdata.youtube.com/schemas/2007';
$media = 'http://search.yahoo.com/mrss/';
// Inside your loop
$id = $video->getElementsByTagNameNS($yt, 'videoid')->item(0)->nodeValue;
$thumb = $video->getElementsByTagNameNS($media, 'thumbnail')->item(0)->getAttribute('url');
Run Code Online (Sandbox Code Playgroud)
希望这应该为您提供一个跳板来跳过访问XML文档中的命名空间项目.