2011-02-04 12 views
5

Estoy tratando de analizar un campo de la lista de reproducción de youtube.Ayuda para analizar XML con DOMDocument

El URL es: http://gdata.youtube.com/feeds/api/playlists/664AA68C6E6BA19B?v=2

necesito: Título, la identificación de video, y defecto en miniatura.

puedo conseguir fácilmente el título, pero estoy un poco perdido cuando se trata de los elementos anidados

 $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 = ??     
      } 
     } 

Aquí es el XML (que han despojado a cabo los elementos que son irrelevantes para este ejemplo)

<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> 

necesito el "videoid" y el "URL" en miniatura-default

Gracias!

Respuesta

7

similares a la getElementsByTagName() que ya está usando, para acceder a los elementos de espacio de nombres (reconocibles por namespace:element-name), puede utilizar el método getElementsByTagNameNS().

La documentación (vinculada anteriormente) debe darle la información técnica sobre cómo usarla, basta con decir que será similar a la siguiente (también usando 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'); 

Esperemos que debería darle un trampolín para saltar en el acceso a los elementos de espacios de nombres en los documentos XML.

+0

que funciona perfectamente ¡muchas gracias! – Titan

+0

funciona como un encanto! thx – Zorox

+0

hola, ¿por qué asignar $ medios a search.yahoo.com.mrss ?? – nuttynibbles

Cuestiones relacionadas