SimpleXML - "Node больше не существует"

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

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

Если кто-нибудь может помочь мне либо разобрать фид другим способом с тем же результатом, либо создать 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++;
}

Ответы

Ответ 1

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

Ответ 2

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

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