Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

PHP ve XML Okuma Problemim

Merhabalar, bir php kodu yazmaya çalışıyorum, xml dosyalarını okuyarak ekrana basması gerekiyor. Örnek xml dosyam aşağıdaki gibidir:
<?xml version="1.0" encoding="utf-8"?>
<talking>
	<entry>
		<username>Sedran</username>
		<text>Selam Herkese!</text>
		<date>1295397546</date>
	</entry>
	<entry>
		<username>Mert</username>
		<text>Bu dünyanın en iyi sitesi</text>
		<date>1295397550</date>
	</entry>
	<entry>
		<username>İlyo</username>
		<text>Paşam afiyet olsun götür!</text>
		<date>1295397565</date>
	</entry>
	<entry>
		<username>Asil</username>
		<text>Birader bi bakar mısın! Bak hele!</text>
		<date>1295397590</date>
	</entry>
</talking>


Yazdığım php kodu ise şudur:
$xmlstr = file_get_contents("xml/talking.xml");
$wgo = new SimpleXMLElement($xmlstr); // what's going on!
echo $wgo->talking->entry->asXML();


Fakat bu kodu çalıştırdığımda şu hatayı veriyor bana:
Fatal error: Call to a member function asXML() on a non-object in D:\wamp\www\asdf\index.php on line 7
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • mce adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    3 cevap - 0 soru
    $wgo->talking->entry->asXML();
    yerine
    $wgo->entry->asXML();

    dener misiniz?

    Root elemana erişim bu şekilde mümkün değilmiş burada yazana göre: http://php.net/manual/en/class.simplexmlelement.php

    Root elemana erişmek için
    $wgo[0]
    yeteli olur sanıyorum.
    • sedran adlı üyenin fotoğrafı sedran
      Çoook teşekkür ettim dün geceden beri beynimi sömürdü bu xml olayı :)
      12 yıl önce yazılmış

Cevaplar

  • fka adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    70 cevap - 0 soru
    Simple XML Elementte root'tan gidilmez. Rootun bir altındaki elementten başlarsın.

    Yani;

    $wgo = new SimpleXMLElement($string); // what's going on!
    echo $wgo->entry[0]->asXML();
    


    Şeklinde bir kullanım doğrudur. Ayrıca entry birden fazla olduğu durumlarda array ile ulaşılır eğer

    echo $wgo->entry[0]->asXML();
    


    yazarsan sadece ilk entry elementine ulaşırsın