Skip to content

PHP ile XML Dosya’dan Veri Çekme

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:

<?php
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:

<?xml version="1.0" encoding="UTF-8"?>
<uyeler>
    <uye>
        <ad>sagoral</ad>
        <adres>İzmir Türkiye</adres>
        <email>ounal@trkodlama.com</email>
    </uye>
    <uye>
        <ad>Oral ÜNAL</ad>
        <adres>İzmir Çiğli</adres>
        <email>ounal_2@trkodlama.com</email>
    </uye>
    <uye>
        <ad>Oral</ad>
        <adres>Çiğli Türkiye</adres>
        <email>ounal_3@trkodlama.com</email>
    </uye>
</uyeler>

Aşağıdaki PHP kodu ile XML dosyamızdaki bütün verileri simplexml_load_file() ve foreach() kullanarak okuyalım:

<?php
// Şimdi uyeler.xml dosyamızı çekelim ve eğer hata meydala gelirse hatayı yazdıralım:
if(!$xml=simplexml_load_file('uyeler.xml')){
    trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);
}

echo 'XML dosyasının içeriğini yazdıralım:...<br />';
foreach($xml as $uye){
    echo 'Ad: '.$uye->ad.' Adres: '.$uye->adres.'
    Email: '.$uye->email.'<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: ounal@trkodlama.com
Ad: Oral ÜNAL Adres: İzmir Çiğli Email: ounal_2@trkodlama.com
Ad: Oral Adres: Çiğli Türkiye Email: ounal_3@trkodlama.com

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:

<?php
// Şimdi uyeler.xml dosyamızı çekelim ve eğer hata meydala gelirse hatayı yazdıralım:
if(!$xml=simplexml_load_file('uyeler.xml')){
    trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);
}

echo 'XML dosyasının içeriğini yazdıralım:...<br />';
foreach($xml as $uye){
echo 'Ad: '.$uye->ad.' <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
Ad: Oral ÜNAL
Ad: Oral

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:

<?php
// Sadece ilk üyenin bilgilerini çekelim
if(!$xml=simplexml_load_file('uyeler.xml')){
    trigger_error('XML dosyasını okurken hata meydana geldi.',E_USER_ERROR);
}

// İlk kullanıcının adını alalım
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.

Umarım yararlı olmuştur. Kolay gelsin,

TR Kodlama GitHub'da!

TR Kodlama'da yer alan makaleleri GitHub üzerinden düzenleyebileceğinizi biliyor muyudunuz? Harika değil mi? Bu makale ile ilgili düzenleme yapmak isterseniz aşağıdaki butona tıklayınız!

GitHub'da Görüntüle ve Düzenle!