2010-03-23 18 views
15

मैं इस यूट्यूब प्लेलिस्ट फ़ीड से वीडियो डेटा प्राप्त करने की कोशिश कर रहा हूं और एक सरणी में दिलचस्प डेटा जोड़ता हूं और बाद में इसका उपयोग करता हूं, लेकिन जैसा कि आप फ़ीड से देख सकते हैं कुछ वीडियोलिंक्स " मृत "और इसके परिणामस्वरूप मेरे कोड के लिए समस्याएं आती हैं।SimpleXML - "नोड अब मौजूद नहीं है"

जब मैं $ attrs ['url'] तक पहुंचने का प्रयास करता हूं तो मुझे "त्रुटि अब मौजूद नहीं है" त्रुटि है। मैंने घंटों तक कोशिश करने का प्रयास किया है कि यह जांचने से पहले कि नोड मौजूद है या नहीं, लेकिन मुझे कोई भाग्य नहीं है।

यदि कोई भी मुझे एक ही परिणाम के साथ फ़ीड को किसी अन्य तरीके से पार्स करने में मदद कर सकता है या एक आई-नोड-मौजूद चेक बनाता है जो काम करता है तो मैं सबसे ज्यादा खुश हूं। अग्रिम धन्यवाद, जो खुद को मूल दस्तावेज बाद में उपयोग हेतु कि डाटा स्टोर करना चाहते हैं, एक स्ट्रिंग के रूप में यह डाली (कुछ आंतरिक libxml है। संबंधित thingy) से जुड़े होते हैं

$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

धन्यवाद! उस जांच ने मेरी समस्या हल की :) –

+3

मुझे एक समस्या का सुझाव दें, समस्या के बारे में कुछ समझाने की कोशिश करें। यह बहुत मदद करता है। –

+0

महत्वपूर्ण बात - '$ मीडिया-> समूह-> थंबनेल [0]' - आपको इस XML ऑब्जेक्ट को खाली के लिए जांचने की आवश्यकता है। यदि यह सत्य है तो किसी भी प्रयास पर '$ मीडिया-> समूह-> थंबनेल [0] -> विशेषताओं()' को हल करने के लिए आपको यह त्रुटि मिल सकती है। – Enyby

8

SimpleXML के तरीकों हमेशा वस्तुओं वापसी , इस तरह:

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

मैं अभी भी इस पंक्ति पर एक ही त्रुटि मिलती है: $ videoobj [$ i] [ 'url'] = (स्ट्रिंग) $ attrs [ 'url']; कास्टिंग मदद नहीं करता है :( –

संबंधित मुद्दे