2011-02-04 16 views
5

Sto cercando di analizzare un campo di playlist di YouTube.Aiuto parsing XML con DOMDocument

L'URL è: http://gdata.youtube.com/feeds/api/playlists/664AA68C6E6BA19B?v=2

Ho bisogno: Titolo, Video ID, e la miniatura di default.

posso facilmente ottenere il titolo, ma io sono un po 'perso quando si tratta di elementi annidati

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

Ecco l'XML (ho messo a nudo gli elementi che sono irrilevanti per questo esempio)

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

ho bisogno della "VideoId" e la "url" da miniature-default

Grazie!

risposta

7

Analogamente allo getElementsByTagName() che si sta già utilizzando, per accedere agli elementi dei nomi (riconoscibili per namespace:element-name) è possibile utilizzare il metodo getElementsByTagNameNS().

La documentazione (linkata sopra) dovrebbe darti la spiegazione tecnica su come usarlo, basti dire che sarà simile al seguente (anche utilizzando 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'); 

Speriamo che dovrebbe dare un trampolino di salto in accesso articoli namespace all'interno dei documenti XML.

+0

che funziona perfettamente grazie mille! – Titan

+0

funziona come un fascino !! grazie – Zorox

+0

, perché assegni $ media a search.yahoo.com.mrss ?? – nuttynibbles