Merhabalar..Bu yazımla beraber sizlere XML teknolojisini ve XMl’in ne kadar esnek bir dil olduğunu anlatmaya çalışacağım. XML çok uzun bir konu olduğu için bu konuyu 2 başlık altında yazacağım.
XML, platformdan bağımsız bir teknolojidir. Elinizde bulunan bir veritabanını XML servisleri kullanarak kolaylıkla dışarı açabilirsiniz. Bu servisle farklı işletim sistemlerine cevap verilebilmesi de xml’i çok popüler yapan özelliklerin başında geliyor. Öncelikle sizlere XML’in genel yapısını, daha sonra da PHP5 ile gelen SimpleXML eklentisini kullanarak XML dosyaları üzerinde okuma ve yazmayı anlatmaya çalışacağım. En sonunda da veritabanına gönderilen sorgu sonuçlarının XML verilerine nasıl çevrildiğini anlatacağım.
XML nedir?
XML, tıpkı HTML gibi başlangıç ve bitiş etiketlerinden oluşur. HTML’den farkı ise bu etiketlerin kullanıcı tanımlı olmasıdır. Diğer farkı da XML’in veri tanımlama amacıyla kullanılmasıdır.
Bir XML dosyasında başlangıçta XML versiyonu ve kullanılan karakter seti <?xml ?>ifadeleri arasında tanımlanır. Daha sonra XML dökümanını gövde kısmı başlar. Gövde ağaç yapısındadır ve elemanlardan oluşur. Gövde ile genel kurallar vardır;
- Her elemanın başlangıç ve bitiş etiketleri vardır.
- Büyük harf küçük harf duyarlılığı vardır.
- Belgenin en üst seviyesinde bulunan elemana kök eleman denir.
- Bir elemanın başlangıç etiketi içinde özellikleri girilebilir.
test1.xml
- <?xml version=”1.0″ encoding=”utf-8″?>
- <sehirler>
- <sehir>
- <adi>Istanbul</adi>
- <fetih>1453</fetih>
- </sehir>
- </sehirler
Yukarıdaki kodun ilk satırında XML versiyonu ve karakter seti tanımlanmıştır. 2. satırda XML dosyasının gövdesi <sehirler> kök elemanı ile başlamış ve 7. satırda </sehirler> bitiş etiketi ile sonlandırılmıştır. Oluşturulan kök elemana ise adi ve fetih olmak üzere 2 tane alt eleman bağlanmıştır.
XML dökümanlarında her bir elemanın başlangıç etiketi içerisinde özellikleri de tanımlanabilir. Örneğin;
- <?xml version=”1.0″ encoding=”utf-8″?>
- <meyveler>
- <meyve rengi=”Kırmızı”>
- <adi> Elma </adi>
- </meyve>
- </meyveler>
Bu özellik gerektiği zamanda <rengi> Kırmızı </rengi>olarakta kullanılabilir. Bu şekilde kullanırsak rengi veri olarak çekebiliriz.
XML’de tarih şeklindeki verilerin işlenmesinde çeşitli zorluklar çıkar. Bu yüzden tarih şeklindeki veriler ay, gün, yıl olarak alt elemanlara ayrılıp kullanılabilir. Örneğin;
- <dogumtarihi> 05.05.1988 </dogumtarihi>
yerine
- <dtarihi>
- <gun>05</gun>
- <ay>05</ay>
- <yil>1988</yil>
- </dtarihi>
kullanmak daha kullanışlıdır.
PHP SimpleXML Eklentisi
PHP5 ile birlikte XML dosyalarına okuma ve yazma işlemlerini gerçekleştirebilmek için SimpleXML eklentisi getirildi. Bu eklentiyi kurmanıza gerek yok çünkü PHP derleyicisinin içinde geliyor.
SimpleXML Kullanarak XML Dosyalarını Okuma
2 fonksiyonu vardır okuma için. Bunlar simple_xml_load_file() ve simple_xml_loadstring() fonksiyonlarıdır. Bunlardan ilki kullanılarak XML dosyaları okunup nesne tipinde bir değişkene, ikincisi ile de string tipindeki bir değişkenden XML verileri okunup aynı şekilde nesne tipindeki bir değişkene çevirilebilir.
- <?php
- if ( file_exists(‘test1.xml’) )
- {
- $xml = simple_xml_load_file (‘test1.xml’);
- }
- else
- {
- echo “Dosya açılamadı “;
- exit();
- }
-
- echo “XML dosyayı başarılı bir şekilde açıldı “;
- ?>
Yukarıda file_exists() fonksiyonuyla test1.xml var mı yok mu diye kontrol ettik. 4. satırdaki kod kullanılarak veriler nesne tipindeki bir değişkene dönüştürülmüştür.
- <?php
- $xmlveri = <<<XML
- <?xml version=”1.0″ encoding=”utf-8″ ?>
- <meyveler>
- <meyve rengi=”Kırmızı”>
- <adi>Elma</adi>
- <meyve>
- </meyveler>
- XML;
-
- $xml = simplexml_load_string($xmlveri);
- ?>
Yukarıdai kodu incelersek 11. satırda $xmlveri string değişkeni içindeki XML verileri fonksiyon yardımıyla nesne tipindeki bir değişkene çevrilip sonuç $xml değişkenine atanmıştır.
- <?php
- $xmlveir = <<<XML
- <?xml version=”1.0″ encoding=”utf-8″ ?>
- <kisiler>
- <kisi>
- <adi> Soner </adi>
- <soyadi> Gönül </soyadi>
- <dyeri> Kırklareli </dyeri>
- <dtarihi>
- <gun>05</gun>
- <ay>05</ay>
- <yil>1988</yil>
- </dtarihi>
- </kisi>
- </kisiler>
- XML;
-
- $xml = simplexml_load_string ($xmlveri);
-
- echo $xml->kisi[0]->adi . “<br>”;
- echo $xml->kisi[0]->dtarihi[0]->yil;
- ?>
Yukarıdaki kodta 18. satırda XML verisi nesne tipindeki değişkene dönüşürülmüştür. Sonucunda <kisiler> başlangıç etiketi ile </kisiler> bitiş etiketi arasında kalan tüm XML verileri tek bir nesne halini almıştır. 20. satırda ise 1. kök elemana erişmek için $xml->kisi[0], adi alt elemanına erişmek için ise $xml->kisi[0]->adi ifadeleri kullanılmıştır.
XML dökümanların içerisinde bulunan elemanların özellikleri üzerinde de işlem yapılabilir. Bu özelliğe verilen isim, string şeklinde dizi indisi kabul edilir. Örneğin;
- <?php
- $xmlveri = <<<XML
- <?xml version=”1.0″ encoding=”utf-8″ ?>
- <arabalar>
- <araba marka=”Mini”>
- <model>Cooper</model>
- <yil> 2006 </yil>
- </araba>
- </arabalar>
- XML;
-
- $xml = simplexml_load_string($xmlveri);
- echo $xml->araba[0]['marka'] . “<br>”;
- ?>
Yukarıda <araba> kök elemanının marka özelliğine 13. satırda string indisli bir dizi değişkeni gibi erişilmiş daha sonra bu sonuç ekrana yazdırılmıştır.
Şimdilik bu kadar. 2. yazımda SimpleXML ile XML dosyalarına yazma ve veritabanındaki sorguların XML’e dönüştürülmesi konularına değineceğim.
Görüşmek üzere..
Related posts