Помощь синтаксического анализа XML с помощью DOMDocument

Я пытаюсь разобрать поле плейлиста 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/&quot;AkYGSXc9cSp7ImA9Wx9VGEk.&quot;"> <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-документах.