HomeBackend GeliştirmePHP

PHP ile XML Dosyayı İşlemek

PHP ile XML Dosyayı İşlemek

XML(Extensible Markup Language) bilgilerinizi dallandırılmış halde saklamak için kullanılır. Genellikle uygulamalar arasında bilgi paylaşımı yapmak için kullanılır aynı zamanda RSS beslemeleride XML ile yapılmaktadır.

PHP 5’in ortaya çıkmasıya XML işleme desteği muhteşem bir şekilde arttı. Bu makale ile bizde PHP ile XML dökümanı işleme, değiştirme ve XML döküman oluşturma işlemlerini öğrenmiş olacağız. Makalenin en altında RSS beslemelerinin nasıl yapıldığını göreceğiz ve aynı zamanda basit bir RSS besleme okuyucusu hazırlamış olacağız.

Bu makaleyi tam anlamıyla kavrayabilmek için nesne tabanlı programlamaya hakim olmanız gerekiyor. Ayrıca XPath terimini biraz araştırmanız da fayda var. Çünkü bu makalede kullanacağız fakat olmasada olurlardan. O zaman başlayalım…

Parsing XML
PHP 5 SimpleXML isimli kullanımı basit olan bir sınıfa sahiptir.

Bu makale boyunca makaleler.xml adlı bir dosya oluşturdum ve trkodlama.com’da seçilmiş rastgele bir kaç makaleyi ekledim

Şimdi PHP dosyamız ile XML dosyasını iki türlü işleme alabiliriz. Ya içeriği komple çekeriz ya da dosyanın yerini gösteririz:

Eğer makaleler.xml dosyası kendi sunucunuzda bulunuyorsa file_get_content() kullanamaya hiç gerek yoktur. file_get_contents() fonksiyonu ile çağırma işlemini sadece farklı web sunucularından XML dosya çekmek zorundaysak kullanmamız en temizi ve güzeli olurdur.

Dosyayı yüklemenin bir başka yöntemi ise simplexml_load_file() fonksiyonunu kullanmaktır. Bunu da şu şekilde gerçekleştirebiliriz:

Şimdi XML dosyamızdaki verileri HTML tabloya yazdıralım

Bu işlemin HTML çıktısı aşağıdaki gibi olacaktır:

Peki siz makalelerden sadece ikinci makalenin başlığını çekmek istiyorsunuz. O zaman şöyle yaparız(dizilerde sayma işleminin 0’dan başladığını hatırlayın)

Aynı makalenin ID’sini şu şekilde çekiyoruz:

XPath
Aynı zamanda Xpath sorgularını da çalıştırabilirsiniz. SimpleXMLElement::xpath() methodunu kullanarak çalışırlar. Eğer bütün makalelerin başlıklarını çekmek istersek aşağıdaki gibi birşey yapabiliriz:

Ya da bütün ID’leri çekmek için:

RSS Beslemelerini İşleme
Şimdi www.trkodlama.com/rss.php adresinden verileri alalım:

Bu size sayfanın başında söylediğim RSS besleme okuyucumuz. Bu okuyucumuzu daha da geliştirmek için biraz AJAX kullanın ve arayüzü şık bir hale getirin.

Gördüğünüz gibi XML bilgiyi işleme XML dosyanın yapısını bildikten sonra SimpleXML ile oldukça basit. Peki yapısını bilmediğiniz bir XML’i işleme almak için ne yapmalısınız? O zaman aşağıdaki işlemleri inceleyin. Fakat hala makaleler.xml dosyamızı kullanmaya devam edeceğiz.

Not: Eğer bunu bir tarayıcıda çalıştırmak isterseniz header(‘Content-type: text/plain’); kodunu ekrana herhangi bir çıktı vermeden önce kullanmalısınız. Böylece tarayıcı bunun sadece bir text olduğunu ve HTML içermediğini anlayacaktır.

Aslında SimpleXML’den çok daha güçlü bir XML işleyicimiz var. Adı da PHP DOM fakat buna şimdi değinmiyorum. Çünkü bende çok iyi bilmiyorum. PHP DOM’u iyice sindirdikten sonra sizler sunarım.

Umarım faydalı ve akıcı bir anlatım olmuştur. Sorularını forumdan, iletişim formundan veya yorum olarak sorabilirsiniz.

Kolay gelsin,

Yorumlar

TOPLAM 0
DISQUS: 0