PHP Dom Class kullanarak oluşturduğumuz XML yapısına önce veriyi nasıl ekleyebilir ve bu veriyi nasıl okuyabiliriz, bu konu üzerinde duracağız.

Şimdi önceki veri yapısı oluştururken farklı olarak createAttribute yerine setAttribute kullanacağız.

<?php
$xml = new DOMDocument();
$xml->encoding = 'UTF-8';

$kitaplar = $xml->createElement('kitaplar');

$kitap = $xml->createElement('kitap');
$kitap_isbn = $kitap->setAttribute('isbn', '9759954949'); // kitap elemanına isbn etiketini ( özellik, nitelik ) ekliyoruz ve buna değer atıyoruz.
$kitap_adi = $xml->createElement('adi', 'Yunus Emre Divanı'); // adi elemanına değer atıyoruz.
$kitap_yazar = $xml->createElement('yazar', 'Selim Yağmur'); // **
$kitap_gorev = $kitap_yazar->setAttribute('gorev', 'Derleyici'); // *
$kitap_dil = $xml->createElement('dil', 'Türkçe'); // **
$kitap_baski = $xml->createElement('baski', 8); // **
$kitap_tarih = $xml->createElement('tarih'); // **

$kitap_tarih_yil = $xml->createElement('yil', 2014); // **
$kitap_tarih_ay = $xml->createElement('ay', 04); // **
$kitap_tarih_gun = $xml->createElement('gun', 01); // **

$kitap_tarih->appendChild($kitap_tarih_yil);
$kitap_tarih->appendChild($kitap_tarih_ay);
$kitap_tarih->appendChild($kitap_tarih_gun);

$kitap_yazar->appendChild($kitap_gorev);
$kitap->appendChild($kitap_adi);
$kitap->appendChild($kitap_yazar);
$kitap->appendChild($kitap_dil);
$kitap->appendChild($kitap_baski);
$kitap->appendChild($kitap_tarih);
$kitap->appendChild($kitap_isbn);

$kitaplar->appendChild($kitap);
$xml->appendChild($kitaplar);

$xml->save('./kutuphane.xml');
?>

XML çıktısı aşağıdaki gibidir

<?xml version="1.0" encoding="UTF-8"?>
<kitaplar>
 <kitap isbn="9759954949">
  <adi>Yunus Emre Divanı</adi>
  <yazar gorev="Derleyici">Selim Yağmur</yazar>
  <dil>Türkçe</dil>
  <baski>8</baski>
  <tarih>
   <yil>2014</yil>
   <ay>4</ay>
   <gun>1</gun>
  </tarih>
 </kitap>
</kitaplar>

Şimdide oluşturduğumuz XML dosyasından veriyi okumaya geldi. İlk başta XML okuyup bunu kaydettiğimiz halde okuyalım.

<?php
$xml = new DOMDocument();
$xml->load('./kutuphane.xml');
print $xml->saveXML();
?>

Bunu tarayıcınızda görüntülemek istediğinizde [ Yunus Emre Divanı Selim Yağmur Türkçe 8 2014 4 1 ] gibi görürsünüz yüksek bir ihtimal, eğer kaynak koduna bakarsanız oluşturduğunuz xml görürsünüz.

Bir çok eleman olduğunda ise;

<?php
$xml = new DOMDocument();
$xml->load('./kutuphane.xml');

$kitaplar = $xml->getElementsByTagName('kitap'); // hangi elemana göre listeleyeceksek örnek: adi, yazar, baski...
foreach ($kitaplar as $key => $value) {
    echo $key.". eleman : ".$value->nodeValue."
";
}
?>

Ekran çıktısı;

0. eleman : Yunus Emre Divanı Selim Yağmur Türkçe 8 2014 04 01
1. eleman : Risaletü'n-Nushiyye Yunus Emre Prof. Dr. Umay Türkeş Günay Türkçe 3 2009 01 01

Kitaplar altındaki kitap elemanlarını listeyebilirsiniz ve bunlara yeni elemanlar ekleyebilirsiniz.