2010-03-23 37 views
15

我想從這個YouTube播放列表供稿的視頻數據和有趣的數據,後來添加到一個數組和使用,但你可以從進料看到一些videolinks是「死了「,並導致我的代碼出現問題。的SimpleXML - 「節點不再存在」

我得到的錯誤是「節點不再存在,」當我試圖訪問$ ATTRS [「網址」。我試了好幾個小時才找到一種方法,在我訪問它之前檢查節點是否存在,但我沒有運氣。

如果有人可以幫助我要麼解析進一些其他的方式具有相同的結果,或創建一個IF-節點存在的支票,我的工作是最幸福的。謝謝你在前進

$url = 'http://gdata.youtube.com/feeds/api/playlists/18A7E36C33EF4B5D?v=2'; 

$sxml = simplexml_load_file($url); 
$i = 0; 
$videoobj; 

foreach ($sxml->entry as $entry) { 
    // get nodes in media: namespace for media information 
    $media = $entry->children('http://search.yahoo.com/mrss/'); 

    // get video player URL 
    $attrs = $media->group->player->attributes(); 
    $videoobj[$i]['url'] = $attrs['url']; 

    // get video thumbnail 
    $attrs = $media->group->thumbnail[0]->attributes(); 
    $videoobj[$i]['thumb'] = $attrs['url']; 
    $videoobj[$i]['title'] = $media->group->title; 
    $i++; 
} 

回答

18
if ($media->group->thumbnail && $media->group->thumbnail[0]->attributes()) { 
    $attrs = $media->group->thumbnail[0]->attributes(); 
    $videoobj[$i]['thumb'] = strval($attrs['url']); 
    $videoobj[$i]['title'] = strval($media->group->title); 
} 
+0

謝謝!那支票解決我的問題:) – 2010-03-23 18:16:19

+3

讓我提出一個問題,試圖解釋這個問題了一點。這有很大幫助。 – 2016-08-02 21:33:55

+0

重要的事情 - 檢查'$ media-> group-> thumbnail [0]' - 你需要檢查這個xml對象爲空。如果它是真的,那麼在任何嘗試解決'$ media-> group-> thumbnail [0] - > attributes()'你可以得到這個錯誤。 – Enyby 2017-03-01 05:23:41

8

的SimpleXML的方法總是返回的對象,它們本身就是鏈接到原始文件如果你想存儲供以後使用這些數據,將它轉換爲字符串(與libxml。相關的一些內部啄) ,像這樣:

$videoobj[$i]['url'] = (string) $attrs['url']; 
$videoobj[$i]['thumb'] = (string) $attrs['url']; 
$videoobj[$i]['title'] = (string) $media->group->title; 
+1

我仍然得到該行同樣的錯誤: $ videoobj [$ i] [ '鏈接'] =(字符串)$ ATTRS [ '鏈接']; 鑄造沒有幫助:( – 2010-03-23 18:03:00