2009-10-20 11 views
6

हैलो मैं इस जैसे मदों की एक श्रृंखला के साथ XML स्वरूप में एक API प्रतिक्रिया:पीएचपी DOMDocument हो रही गुण

<item> 
<title>blah balh</title> 
<pubDate>Tue, 20 Oct 2009 </pubDate> 
<media:file date="today" data="example text string"/> 
</item> 

मैं टैग से DOMDocument उपयोग करने के लिए विशेषता "डाटा" प्राप्त करना चाहते हैं " मीडिया फ़ाइल"। मेरा प्रयास नीचे काम नहीं करता है:

$xmldoc = new DOMDocument(); 
$xmldoc->load('api response address'); 
foreach ($xmldoc->getElementsByTagName('item') as $feeditem) { 
$nodes = $feeditem->getElementsByTagName('media:file'); 
$linkthumb = $nodes->item(0)->getAttribute('data'); 
} 

मैं क्या गलत कर रहा हूं? कृपया मदद करे।

संपादित करें: मैं किसी कारण से टिप्पणी छोड़ नहीं सकता मार्क। मुझे त्रुटि मिली है

Call to a member function getAttribute() on a non-object 

जब मैं अपना कोड चलाता हूं। मैंने

$nodes = $feeditem->getElementsByTagNameNS('uri','file'); 
$linkthumb = $nodes->item(0)->getAttribute('data'); 

जहां यूरी मीडिया नाम स्थान (एनएस) से संबंधित यूरी है लेकिन फिर भी वही समस्या है।

ध्यान दें कि मीडिया तत्व फ़ॉर्म का है, मुझे नहीं लगता कि यह समस्या का हिस्सा है, क्योंकि मुझे आमतौर पर एटिब्यूट्स के लिए कोई समस्या नहीं है।

उत्तर

8

आपके द्वारा प्रदान किया गया उदाहरण किसी त्रुटि उत्पन्न नहीं करना चाहिए। मैंने इसका परीक्षण किया और $ linkthumb की स्ट्रिंग "उदाहरण टेक्स्ट स्ट्रिंग" अपेक्षित

सुनिश्चित करें कि मीडिया नामस्थान को लौटाए गए XML में परिभाषित किया गया है अन्यथा DOMDocument त्रुटि होगी।

आप एक विशिष्ट त्रुटि मिल रहे हैं, अपनी पोस्ट को संपादित कृपया शामिल करने के लिए यह

संपादित करें:

निम्नलिखित कोड का प्रयास करें:

$xmldoc = new DOMDocument(); 
$xmldoc->load('api response address'); 
foreach ($xmldoc->getElementsByTagName('item') as $feeditem) { 
    $nodes = $feeditem->getElementsByTagName('file'); 
    $linkthumb = $nodes->item(0)->getAttribute('data'); 
    echo $linkthumb; 
} 

तुम भी SimpleXML को देखने के लिए चाहते हो सकता है और Xpath क्योंकि यह XML को DOMDocument से अधिक आसान बनाता है।

+0

कि यह किया, अतिरिक्त कोड। धन्यवाद !! –

3

वैकल्पिक रूप से,

$DOMNode -> attributes -> getNamedItem('MyAttribute') -> value;