PHP ile XML Okumak: children() ve attributes()

Merhaba
Bu yazımda, daha önce de benzerlerine değindiğim PHP ile XML okuma konusunda basit bir uygulama yapacağım. XML dosyası, okunması pek zor olmayan bir yapıda olacak, ancak attribute’ları da okuyabilmeyi göstereceğim. Bunun için öncelikle XML dosyamı oluşturayım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?xml version="1.0" encoding="UTF-8" ?> <categories> <category id="1" name="Yeni Sezon"> <product>Product1-1</product> <product>Product1-2</product> <product>Product1-3</product> <product>Product1-4</product> <product>Product1-5</product> </category> <category id="2" name="Montlar"> <product>Product2-1</product> <product>Product2-2</product> <product>Product2-3</product> <product>Product2-4</product> <product>Product2-5</product> </category> <category id="3" name="Outlet"> <product>Product3-1</product> <product>Product3-2</product> <product>Product3-3</product> <product>Product3-4</product> <product>Product3-5</product> </category> </categories> |
Farkındaysanız hiyerarşisi oldukça kolay anlaşılabilen bir XML dosyası ile karşı karşıyayız.
1 2 3 |
categories -category (id, name) --product |
Yukarıdaki şekilde bir hiyerarşiyi foreach döngüsü sayesinde yapacağız. Bunun için öncelikle categories elementini parse etmek gerekmekte. children fonksiyonu işimizi görecektir.
1 2 3 4 5 6 |
//xml dosyamı burada tanımlıyorum. $myXML = simplexml_load_file ( 'urunler.xml' ); foreach ( $myXML->children() as $categories ) { //kodlarım buraya gelecek } |
Görüldüğü gibi, artık en üst element, attribute ve alt elementlerine ayrıştırılabilir duruma getirildi. Bundan sonraki işlemler, categories altında bulunan category elementlerine bağlı olan product elementlerinin değerlerine erişmek olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$myXML = simplexml_load_file ( 'urunler.xml' ); foreach ( $myXML->children() as $categories ) { $category = array ( 'id' => $categories->attributes()->id, 'name' => $categories->attributes()->name ); print '<br>id=<b>'.$category['id']."</b> and name=<b>".$category['name']."</b><br><br>"; foreach ($categories->children() as $product) { print 'Product=<b>'.$product."</b><br>"; } } |
Kodumuz çalıştırılıp ekran görüntüsü incelendiğinde, aşağıdaki gibi bir görüntü elde edilecektir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
id=1 and name=Yeni Sezon Product=Product1-1 Product=Product1-2 Product=Product1-3 Product=Product1-4 Product=Product1-5 id=2 and name=Montlar Product=Product2-1 Product=Product2-2 Product=Product2-3 Product=Product2-4 Product=Product2-5 id=3 and name=Outlet Product=Product3-1 Product=Product3-2 Product=Product3-3 Product=Product3-4 Product=Product3-5 |
Bir sonraki yazımda görüşmek üzere!
Yazar Hakkında
My Name is A. Gokhan SATMAN, and I am a software engineer, Author and game developer. gokhansatman.com
Daha fazla yazı görüntüle
Henüz yorum yok
Tartışma başlatabilirsin.