PHP ile XML dosyasından simpleXML ile verileri nasıl çekeceğimizi anlatıyorum…
Merhaba,
Bu makalemde PHP ile XML dosyasındaki veriyi nasıl okuyacağımızı göstereceğim. Bu makaleyi okuduktan sonra dilediğiniz sitenin(paylaşıma açık olması gerekli) XML dosyalarına erişebilirsiniz. Ayrıca kendi RSS Okuyucunuzu bile yapabilirsiniz. Sonuçta RSS okuyucularının çıkış noktası XML dosyalarının yorumlanmasıdır.
Teorik Bilgi: PHP simpleXML XML dosylarınızı nesneye çevirmenizi sağlar. Bu makalede simpleXML’in simplexml_load_file() fonksiyonunu göreceğiz. Fonksiyonun kullanım yapısı şu şekildedir:
1
simplexml_load_file('dosya');// Daha detaylı bir kullanım için php.net'i ziyaret etmeyi unutmayın
Hemen bir örnek ile kullanımını göstereyim. Öncelikle uyeler.xml adlı bir dosya oluşturun. Bu dosyanın içeriği aşağıdaki gibi olsun:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0"encoding="iso-8859-1"?><br/>
<uyeler><br/>
<uye><br/>
<ad>sagoral</ad><br/>
<adres>İzmirTürkiye</adres><br/>
<email>ounal@trkodlama.com</email><br/>
</uye><br/>
<uye><br/>
<ad>OralÜNAL</ad><br/>
<adres>İzmirÇiğli</adres><br/>
<email>ounal_2@trkodlama.com</email><br/>
</uye><br/>
<uye><br/>
<ad>Oral</ad><br/>
<adres>ÇiğliTürkiye</adres><br/>
<email>ounal_3@trkodlama.com</email><br/>
</uye><br/>
</uyeler>
Aşağıdaki PHP kodu ile XML dosyamızdaki bütün verileri simplexml_load_file() ve foreach() kullanarak okuyalım:
1
2
3
4
5
6
7
8
9
// Şimdi uyeler.xml dosyamızı çekelim ve eğer hata meydala gelirse hatayı yazdıralım:<br />
if(!$xml=simplexml_load_file('uyeler.xml')){<br/>
trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);<br/>
Yukarıdaki PHP kodunun ekran görüntüsü aşağıdaki gibi olacaktır:
XML Dosyasının içeriğini yazdıralım:…
Ad: sagoral Adres: İzmir Türkiye Email: [email protected]
Ad: Oral ÜNAL Adres: İzmir Çiğli Email: [email protected]
Ad: Oral Adres: Çiğli Türkiye Email: [email protected]
Gerçekten çok kolaymış değil mi? Ne kadar kolay olduğunu gördünüz. Şimdi bir örnek daha yapalım ve tamamen pekiştirelim. Bu örneğimizde sadece adları alalım ve alt alta sıralayalım:
1
2
3
4
5
6
7
8
9
// Şimdi uyeler.xml dosyamızı çekelim ve eğer hata meydala gelirse hatayı yazdıralım:<br />
if(!$xml=simplexml_load_file('uyeler.xml')){<br/>
trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);<br/>
Ne kadar kolay olduğunu görmüş olduk. Şimdi XML dosyasından bilgi çekme tarzımızı değiştirelim. Bu işlemde oldukça basittir. Tamamen dizi mantığı ile bu olayından üstesinden geleceğiz. Örneğimizi inceleyelim:
1
2
3
4
5
6
// Sadece ilk üyenin bilgilerini çekelim<br />
if(!$xml=simplexml_load_file('uyeler.xml')){<br/>
trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);<br/>
}<br/>
// İlk kullanıcının adını alalım<br />
echo'İlk kullanıcının adı: '.$xml->uye[0]->ad;
Yukarıdaki kodun ekran görüntüsü aşağıdaki gibi olacaktır:
İlk kullanıcının adı: sagoral
PHP’de biliyorsunuz sayma işlemi 0’dan başlıyor.. Bu nedenle 1. üyenin bilgisini çekerken 0; 2. üyenin bilgisini çekerken 1 kullanıyoruz. Yani dizilerle aynı mantıkla çalışıyor.
Büyük ihtimalle hata alıyodur ve hataları sayfaya yazdırmıyosundur. O nedenle boş beyaz sayfa geliyodur… Şöyle bir yöntem deneyebilirsin
$xml=simplexml_load_file(‘uyeler.xml’) yazmak yerine
$xml=file_get_contents(‘uyeler.xml’);
$xml=simplexml_load_file($xml); yaparak dene bakalım olacak mı?
bu şekilde yaptıgımızda sorun yok çalışıyor. fakat birşey sormak istiyorum.
1.
xml den çektiğimiz veriyi ekrana basmak değil de bir değişkene atayıp kullanmak istiyorum nasıl yaparım?
2.
xmlden veri çektiğimizde kaç tane sonuç olduğunu bilmiyorum. bazen 1 oluyor bazen 2 bazen 3 bazen 4
bu durumda ben veri çekerken nasıl işlem yapacagım?