Tag PHP DOMDocument alma Özellik

2 Cevap php

Merhaba ben bu gibi öğelerin bir dizi ile xml formatında bir api yanıt var:

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

Ben tag ": Dosya medya" dan özniteliği "veri" almak için DOMDocument kullanmak istiyorum. Aşağıda benim girişimi çalışmıyor:

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

Ben yanlış ne yapıyorum? Lütfen yardım edin.

EDIT: Ben nedense Mark için yorum terk edemez. Ben hata alıyorum

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

Benim kod çalıştırdığınızda. Ben de denedim

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

uri medya adını alan (NS) ama yine aynı sorun ile ilgili uri olduğu.

Medya öğesi ben genelde attibutes ayrıştırma hiçbir sorunu var gibi, bu sorunun bir parçası olduğunu düşünmüyorum formda olduğunu unutmayın.

2 Cevap

Verdiğiniz örnek bir hata oluşturmak gerekir. Bunu test ve beklendiği gibi $ linkthumb dizge "örnek metin dizesini" içeriyordu

media namespace döndürülen XML tanımlanan emin olun, aksi takdirde DOMDocument dışarı hata olacaktır.

Eğer belirli bir hata alıyorsanız, bunu eklemek post düzenlemek lütfen

Edit:

Aşağıdaki kodu deneyin:

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

Ayrıca bu DOMDocument çok daha kolay XML okuma yapar gibi SimpleXML ve Xpath bakmak isteyebilirsiniz.

Seçenek olarak,

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