Я пытаюсь разобрать поле плейлиста youtube.
URL-адрес: 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 = ?? } }
Вот XML (я удалил элементы, которые не подходят для этого примера)
<entry gd:etag="W/"AkYGSXc9cSp7ImA9Wx9VGEk.""> <title>A GoPro Weekend On The Ice</title> <media:group> <media:thumbnail url="http://img.ruphp.com/php/default.jpg" height="90" width="120" time="00:02:07" yt:name="default" /> <yt:videoid>yk6wkfVNFQE</yt:videoid> </media:group> </entry>
Мне нужен «видеоид» и «url» из миниатюры по умолчанию
Спасибо!
Подобно getElementsByTagName()
который вы уже используете, для доступа к элементам с namespace:element-name
имен (распознаваемых 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');
Надеюсь, это должно дать вам весеннюю доску, чтобы перейти к доступу к пространствам имен в ваших XML-документах.