SimpleXML – «Узел больше не существует»

Я пытаюсь получить видеоданные из этого фида плейлиста youtube и добавить интересные данные в массив и использовать их позже, но, как вы можете видеть из фида, некоторые видеозаписи «мертвы», и это приводит к проблемам для моего кода.

Ошибка, которую я получаю, это «Узел больше не существует», когда я пытаюсь получить доступ к $ attrs ['url']. Я пробовал несколько часов, чтобы найти способ проверить, существует ли узел до того, как я его получу, но мне не повезло.

Если бы кто-нибудь мог помочь мне либо разобрать фид другим способом с тем же результатом, либо создать проверку if-node-exists, которая работает, я был бы наиболее счастлив. заранее спасибо

$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++; } 

 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); } 

Методы SimpleXML всегда возвращают объекты, которые сами связаны с исходным документом (некоторые внутренние вещи связаны с libxml.) Если вы хотите сохранить эти данные для последующего использования, введите его как строку, например:

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