2011-02-04 2 views
5

Я пытаюсь разобрать поле плейлиста youtube.Помогите разобрать XML с DOMDocument

URL-адрес является: http://gdata.youtube.com/feeds/api/playlists/664AA68C6E6BA19B?v=2

мне нужно: название, идентификатор видео, и по умолчанию миниатюра.

Я могу легко получить титул, но я немного потерял, когда дело доходит до вложенных элементов

 $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://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> 

мне нужна "VideoID" и "URL" от эскиза-умолчанию

Спасибо!

ответ

7

Как и у 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'); 

Надеется, что должно дать вам трамплин для рывка в доступе элементов в пространствах имёны ваши XML-документах.

+0

это отлично работает! – Titan

+0

работает как шарм !! thx – Zorox

+0

привет, почему вы присваиваете $ media для поиска.yahoo.com.mrss ?? – nuttynibbles

Смежные вопросы