2011-02-04 9 views
5

YouTubeプレイリストフィールドを解析しようとしています。DOMDocumentを使用してXMLを解析するヘルプ

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

私はありがとうございサムネイルデフォルト

から「動画ID」と「URL」が必要!

答えて

7

既に使用しているgetElementsByTagName()と同様に、名前空間要素(namespace:element-nameで認識可能)にアクセスするには、getElementsByTagNameNS()メソッドを使用できます。

文書には、使用方法に関する技術的な説明がありますが、それは次のようになります(getAttribute()も同様)。あなたのXML文書内の名前空間のアイテムにアクセスするに飛躍するためにあなたのスプリングボードを与える必要があります

$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'); 

うまくいけば。

+0

とてもありがとうございました! – Titan

+0

は魅力的な作品です! thx – Zorox

+0

こんにちは、なぜあなたはsearch.yahoo.com.mrssに$ mediaを割り当てますか? – nuttynibbles

関連する問題