2011-08-14 36 views
0

我有一個來自youtube API的XML提要。到目前爲止,我已經成功地提升了標題,縮略圖,收視率等等。但是,我正在努力解析以下提要中的內容網址。從YouTube上選擇內容類型API

<feed xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/'> 
<entry> 
<media:group> 
<media:content url='http://www.youtube.com/v/ZTUVgYoeN_b?f=gdata_standard...' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='215' yt:format='5'/> 

<media:content url='rtsp://rtsp2.youtube.com/ChoLENy73bIAEQ1kgGDA==/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='215' yt:format='1'/> 

<media:content url='rtsp://rtsp2.youtube.com/ChoLENy73bIDRQ1kgGDA==/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='215' yt:format='6'/> 

</media:group> 
</entry> 
</feed> 

下面是我的代碼到目前爲止。我相信這對其他項目的工作,因爲我沒有從多個節點,即選擇只有一個標題,縮略圖網址等..

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $xml_feed_url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$xml = curl_exec($ch); 
curl_close($ch); 

$feed = produce_XML_object_tree($xml); 
$entry = $feed->entry; 
$media = $entry->children('http://search.yahoo.com/mrss/'); 
$urla=$media->content->attributes(); 
$url=$urla["url"]; 

function produce_XML_object_tree($raw_XML) 
{ 
libxml_use_internal_errors(true); 
try 
    { 
    $xmlTree = new SimpleXMLElement($raw_XML); 
    } 
    catch (Exception $e) 
    { 
    // Something went wrong. 
    $error_message = 'SimpleXMLElement threw an exception.'; 
    foreach(libxml_get_errors() as $error_line) 
     { 
     $error_message .= "\t" . $error_line->message; 
     } 

    trigger_error($error_message); 
    return false; 
    } 
return $xmlTree; 
} 

如何選擇這些內容類型中的一種?

+0

有沒有'在XML src'屬性還有你的......有一個'url'屬性的URL,因此沒有什麼你應該閱讀? –

+0

哎呀!我解決了一些錯誤的代碼。我已經更新了它。這不是問題的順便說一句。 – stupidmachine

+0

你也許應該解釋'$ media'是什麼。 PHP中不僅有一種解析XML的方法。我們不知道這個變量是什麼。 –

回答

0

解決

要選擇的內容類型我只是用一個簡單的指標之一。希望這是一個教訓,我只需要學習一次:

$urla=$media->group->content[0]->attributes(); 
$url=$urla["url"];