PHP ile XML dosya işlemleri: Örnek kodlar ve yöntemler

PHP ile XML dosya işlemleri: Örnek kodlar ve yöntemler

PHP ile XML dosya işlemleri için örnek kodlar ve yöntemler burada! Bu rehberimizde XML dosyalarını nasıl açabileceğinizi, düzenleyebileceğinizi ve kaydedebileceğinizi öğreneceksiniz Başlayın!

PHP ile XML dosya işlemleri: Örnek kodlar ve yöntemler

PHP, internet sitelerinin dinamik olarak çalışması için sıkça kullanılan bir programlama dilidir. XML (Genişletilebilir İşaretleme Dili), verileri taşımak ve değiş tokuş etmek için yaygın bir biçimdir. PHP ve XML, veri işleme ve sitelerin dinamikleştirilmesinde kullanılan yenilikçi bir çözümdür.

XML, basit bir açılım olan 'Genişletilebilir İşaretleme Dili' anlamına gelir ve doğru biçimlendirildiğinde, verilerin doğru kaydedilmesini ve değiştirilmesini sağlar. XML dosyaları, cihazlar arasında veri alışverişi yapmak için mümkün olan en kolay yoldur. Özellikle web sitelerinin arka planında kullanılan PHP gibi programlama dilleri ile XML, sitelerin verilerini daha dinamik hale getirebilmelerine olanak sağlar.

XML dosyaları, birden çok veri türünü depolamak için kullanılabilir. Örneğin; müşterilerin adı, adresi, e-posta adresi ve sipariş bilgileri gibi, kullanmak istediğiniz tüm verileri saklayabilirsiniz. XML, belirli bir HTML kodundan farklıdır çünkü veri saklamak için şemalar kullanır. Bu da her veri kümesinin farklı bir yapıya sahip olabileceği, ancak yine de tek bir XML dosyası altında tutulabileceği anlamına gelir.


XML Dosyalarını Okuma

XML dosyaları internet ve elektronik ortamlarda verilerin aktarımı için sıkça kullanılan bir dosya biçimidir. XML dosyaları içerisinde kullanılan etiketler ve veri yapısı sayesinde, veriler açık ve anlaşılır bir şekilde saklanabilir. PHP programlama dili kullanarak XML dosyalarının nasıl okunabileceği birkaç yöntemle gerçekleştirilebilir.

SAX ve DOM, PHP kullanılarak XML dosyalarını okumanın en popüler iki yöntemidir. SAX yöntemi, dosya içerisindeki her etikete dokunulup işlenirken, DOM yöntemi, dosya tamamen yüklenene kadar bekleyip, daha sonra tüm dosya etiketleri bir DOM ağacına yüklenir ve işlem yapılır. SAX yöntemi, daha az bellek kullanırken, DOM yöntemi daha hızlıdır.

SAX yöntemi kullanılarak PHP ile XML dosyalarının okunması için aşağıdaki adımlar takip edilmelidir:

  • XML dosyası belirtilerek açılmalıdır.
  • XML dosyası okunabilir hale getirilmelidir.
  • Her bir etiket işlenmelidir.

Örnek kod:

$xml_document = xml_parser_create();

function startElement($parser, $name, $attrs) { echo "Element: $name
";}

function endElement($parser, $name) { echo "
";}

function characterData($parser, $data) { echo "Data: $data
";}

xml_set_element_handler($xml_document, "startElement", "endElement");xml_set_character_data_handler($xml_document, "characterData");

$xml = " John Smith Manager Jane Doe Assistant ";

xml_parse($xml_document, $xml, true);xml_parser_free($xml_document);

DOM yöntemi kullanılarak PHP ile XML dosyalarının okunması için aşağıdaki adımlar takip edilmelidir:

  • XML dosyası belirtilerek açılmalıdır.
  • Tüm dosya okunarak bir DOM ağacı oluşturulmalıdır.
  • Belirli bir etikete erişmek için DOM ağacı kullanılmalıdır.

Örnek kod:

$xml = "            John Smith        Manager                Jane Doe        Assistant    ";

$dom = new DOMDocument();$dom->loadXML($xml);

$employees = $dom->getElementsByTagName('employee');

foreach ($employees as $employee) { $name = $employee->getElementsByTagName('name')->item(0)->nodeValue; $title = $employee->getElementsByTagName('title')->item(0)->nodeValue; echo "Name: $name, Title: $title
";}

Yukarıdaki örnek kodlar sayesinde, PHP kullanarak XML dosyalarının nasıl okunabileceğini öğrenmiş oldunuz. Bu yöntemler sayesinde XML dosyalarında yer alan verileri işleyebilir ve gerektiğinde düzenleyebilirsiniz.


SAX Yöntemi

SAX yöntemi, XML dosyalarının daha hızlı işlenmesi için kullanılan bir yöntemdir. Bu yöntemle XML dosyaları, satır satır okunur ve böylece daha az bellek tüketilir. SAX yöntemi kullanarak bir XML dosyasını okumak için öncelikle bir XML nesnesi oluşturulur. Daha sonra, bu nesne "startElement" ve "endElement" gibi özelliklerle donatılır. "startElement", her etiket başlangıcında çağrılırken, "endElement" ise her etiket sonunda çağrılır. Bu yöntemle, XML dosyası satır satır okunarak işlemler yapılabilir. Aşağıdaki örnek kodlar, SAX yöntemi kullanılarak bir XML dosyasının okunmasını gösterir:

// XML nesnesi oluşturma$xml = xml_parser_create();

// startElement fonksiyonunu tanımlamafunction startElement($parser, $element_name, $element_attrs) { echo "Etiket: ".$element_name." "; echo "Attr: "; print_r($element_attrs); echo "
";}

// endElement fonksiyonunu tanımlamafunction endElement($parser, $element_name) { echo "
";}

// XML dosyasını okumaxml_set_element_handler($xml, "startElement", "endElement");$xmlDosyasi = file_get_contents("ornek.xml");xml_parse($xml, $xmlDosyasi);

Yukarıdaki kodlar, "ornek.xml" adlı dosyadaki XML verilerini okuyacak ve her bir etiketin başlangıcında ve sonunda "startElement" ve "endElement" fonksiyonlarını çağıracaktır. Bu yöntemle, XML dosyaları daha hızlı ve bellek dostu bir şekilde işlenebilir.


DOM Yöntemi

DOM (Document Object Model) yöntemi, XML dosyalarını ağaç yapısı olarak yükler. Bu yöntem, tüm XML verilerini bellekte bir ağaç şeklinde depolayarak, istediğimiz veriye daha kolay bir şekilde erişim sağlar. DOM yöntemi ile XML dosyalarını okuma adımları şöyledir:

  • XML dosyası açılır.
  • Bellek işaretçisi, dosyadaki ilk oluşturulabilir etikete işaret eder.
  • DOM, etiketi okuyarak etiket adı, özellikleri ve değerleri gibi tüm bilgileri ayrıştırır ve bunları bir obje olarak saklar.
  • DOM, ağaç yapısına benzer bir yapı oluşturur ve tüm XML verilerini bu yapışta depolar.
  • Ardından istediğimiz veriye kolay bir şekilde ulaşabiliriz.

Bu yöntem ile XML dosyalarında tüm verilere kolayca erişim sağlayabilirsiniz. DOM yöntemi ile XML dosyalarını okuma işlemine örnek kodlar şu şekildedir:

Kod Açıklama
$xml = file_get_contents("dosya.xml");
$xml_obj = new DOMDocument();
$xml_obj->loadXML($xml);
$root = $xml_obj->documentElement;
XML dosyasını yükleme işlemi
$kitap = $root->getElementsByTagName("kitap")->item(0);
$baslik = $kitap->getElementsByTagName("baslik")->item(0)->nodeValue;
$yazar = $kitap->getElementsByTagName("yazar")->item(0)->nodeValue;
XML dosyasındaki kitap öğesinin başlık ve yazar bilgilerine erişim işlemi

DOM yöntemi, XML dosyalarına yazma ve düzenleme işlemlerinde de kullanılabilir. XML dosyalarının okunabilirliğini artırmak için DOM yöntemi kullanılabilir.


XML Dosyalarına Yazma

XML dosyalarına yazmak için kullanılan yöntemlerden ilki, Simple API for XML (SAX) yöntemidir. Bu yöntem, okuma yöntemine benzer şekilde kullanılır. Ancak, verinin okunması yerine, veri oluşturulur ve XML dosyasına yazılır.

SAX yönteminde, XML dosyasına bir düğüm eklemek için startElement () fonksiyonu kullanılır. Örneğin, aşağıdaki örnek XML dosyasına bir düğüm ekleyeceğiz.

Öncesi Sonrası
<root></root> <root><newNode>Yeni Düğüm</newNode></root>

Bu işlemi gerçekleştirmek için aşağıdaki PHP kodunu kullanabiliriz:

$xml = new XMLWriter();$xml->openURI("test.xml");$xml->startDocument();$xml->startElement("root");$xml->startElement("newNode");$xml->text("Yeni Düğüm");$xml->endElement();$xml->endElement();$xml->endDocument();

İkinci yöntem, Document Object Model (DOM) yöntemidir. DOM yöntemi, XML dosyasında değişiklik yapmanız gereken durumlarda kullanılması daha kolaydır çünkü otomatik olarak dosyayı okur ve değiştirebilir. Bu yöntem, SAX yöntemine kıyasla daha ayrıntılı olmasına rağmen, daha fazla bellek kullanımına neden olabilir.

DOM yönteminde, aşağıdaki gibi düğüm eklemek için createElement () ve appendChild () fonksiyonlarını kullanabiliriz.

$xmlDoc = new DOMDocument();$xmlDoc->load("test.xml");$newNode = $xmlDoc->createElement("newNode");$root = $xmlDoc->getElementsByTagName("root")->item(0);$root->appendChild($newNode);$newNodeText = $xmlDoc->createTextNode("Yeni Düğüm");$newNode->appendChild($newNodeText);$xmlDoc->save("test.xml");

XML dosyalarına yazmak için bu iki yöntemi kullanarak, XML dosyalarınızı kolayca oluşturabilir ve yönetebilirsiniz.


SAX Yöntemi

SAX (Simple API for XML) yöntemi, XML dosyalarına okuma, yazma ve düzenleme işlemlerini gerçekleştirir. SXA yöntemi, DOM yöntemine göre daha hızlı ve bellek dostudur. Bu yöntem kullanıldığında, XML dosyası çıktısının parça parça işlenmesi gerekmektedir. Bu nedenle, dosya büyükse veya çok sayıda içerik barındırıyorsa, SAX yöntemi daha uygun bir seçenek olabilir.

SAX yöntemi ile XML dosyalarına yazma işlemi, önce XMLWriter sınıfı kullanılarak gerçekleştirilir. Daha sonra, XMLWriter sınıfı ile oluşturulan nesne kullanılarak XML içeriği yazılır. Örneğin, aşağıdaki kod bloğunda yeni bir XML dosyası oluşturulur, öğeler ve öznitelikler eklenir ve dosya diske kaydedilir:

<?php // XML dosyası oluştur$writer = new XMLWriter(); $writer->openURI("example.xml"); $writer->startDocument('1.0','UTF-8'); $writer->setIndent(true); // Öğeleri ekle$writer->startElement("Ürünler"); $writer->startElement("Ürün"); $writer->writeAttribute("id", "1"); $writer->writeElement("Adı", "Bilgisayar"); $writer->writeElement("Marka", "Dell"); $writer->writeElement("Fiyat", "$1500"); $writer->endElement(); $writer->startElement("Ürün"); $writer->writeAttribute("id", "2"); $writer->writeElement("Adı", "Telefon"); $writer->writeElement("Marka", "Samsung"); $writer->writeElement("Fiyat", "$1000"); $writer->endElement(); $writer->endElement(); $writer->endDocument(); // Dosyayı kaydet$writer->flush(); ?>

Bu örnekte, XMLWriter sınıfı kullanılarak yeni bir dosya oluşturuluyor. Ardından, startElement() fonksiyonu kullanılarak Ürünler ana öğesi ekleniyor. Daha sonra, her öğe için startElement() ve endElement() fonksiyonları kullanılarak Ürün öğeleri ve ilgili öznitelikler ekleniyor. Son olarak, dosya kaydediliyor ve XML içeriği oluşturuluyor.


DOM Yöntemi

DOM (Document Object Model) yöntemi, XML dosyalarına yazmak için daha kolay ve anlaşılır bir yöntemdir. Bu yöntemde, XML dosyasını parça parça bir yapıya indirgemek ve bu yapının üzerinde işlem yapmak mümkündür. DOM yöntemi kullanılarak XML dosyalarına yazmak için aşağıdaki adımlar izlenir:

  • XML dosyası oluşturulur ve DOM yapısı oluşturulur.
  • XML dosyasında değişiklik yapmak için gereken elemanlar seçilir.
  • Seçilen elemanların içerisine yeni elemanlar eklenir veya mevcut elemanlar düzenlenir.
  • Değişiklikler yapılan XML dosyası kaydedilir.

Aşağıda, DOM yöntemi kullanarak XML dosyalarına yazma örneği verilmiştir:

XML Dosyası PHP Kodu
      <?xml version="1.0" encoding="UTF-8"?>      <kitaplar>        <kitap>          <baslik>PHP ile XML Dosya İşlemleri</baslik>          <yazar>Ahmet Yılmaz</yazar>          <fiyat>25 TL</fiyat>        </kitap>      </kitaplar>      
      <?php        $dom = new DOMDocument('1.0', 'UTF-8');        $dom->formatOutput = true;                $kitaplar = $dom->createElement('kitaplar');        $kitap = $dom->createElement('kitap');                $baslik = $dom->createElement('baslik', 'XML ile Dosya İşlemleri');        $yazar = $dom->createElement('yazar', 'Mehmet Can');        $fiyat = $dom->createElement('fiyat', '30 TL');                $kitap->appendChild($baslik);        $kitap->appendChild($yazar);        $kitap->appendChild($fiyat);                $kitaplar->appendChild($kitap);        $dom->appendChild($kitaplar);                $dom->save('yeni_kitaplar.xml');      ?>      

Bu örnekte, DOM yöntemi kullanarak yeni bir kitap eklenmiştir. Oluşturulan DOM yapısı, XML dosyasının içerisine kaydedilmiştir.


XML Dosyalarını Düzenleme

XML dosyalarını düzenlemek, belirli bir yapıya sahip olan XML dosyalarının içindeki verileri güncelleme, ekleme ve silme işlemlerinin gerçekleştirilmesini sağlar. PHP, bu işlemleri kolayca yapabileceğiniz bir dizi fonksiyon ve yöntem sunar.

SAX yöntemi, XML dosyalarını okuma ve düzenleme konusunda bir seçenek olarak kullanılabilir. SAX yöntemi, XML dosyalarının tümünü belleğe almak yerine sadece her bir öğeyi okuyarak düzenleme işlemlerini gerçekleştirir. Bu nedenle, SAX yöntemi, büyük boyutlu XML dosyalarını düzenlerken daha verimli olabilir.

DOM yöntemi, XML dosyasının tamamını belleğe yükleyerek düzenleme yapmanıza olanak tanıyan bir yöntemdir. Bu yöntemle, XML dosyasında istediğiniz herhangi bir yerde değişiklik yapabilirsiniz. DOM yöntemi, küçük boyutlu XML dosyaları için iyi bir seçenektir.

Yeni bir XML dosyası oluşturmak veya mevcut bir XML dosyasındaki verileri değiştirmek için PHP'de hazır fonksiyonlar vardır. XML dosyası oluşturma işlemi, dosya içinde belirli bir hiyerarşi oluşturmak ve her bir öğeyi belirli bir etiketle tanımlamakla başlar.

XML dosyalarını düzenlerken belirli bir yapıya sahip olan XML dosyalarına uymanız gerekir. Aksi takdirde, XML dosyası düzgün çalışmayabilir veya yapısal hatalar oluşabilir. Düzenleme işlemini gerçekleştirdikten sonra, XML dosyasının geçerli olup olmadığını kontrol etmek önemlidir.

Sonuç olarak, PHP ile XML dosyalarını düzenleme işlemi yapmak oldukça kolaydır. SAX ve DOM yöntemleri, XML dosyalarında veri okuma ve düzenleme işlemlerinin farklı yöntemleri olarak kullanılabilir. PHP'deki hazır fonksiyonlar, XML dosyalarında değişiklik yapma işlemlerini basitleştirir. Ancak, XML dosyalarının belirli bir yapıya sahip olması, yapısal hataların önlenmesi için önemlidir.


SAX Yöntemi

SAX yöntemi, XML dosyaları üzerinde okuma ve düzenleme işlemlerinin yapılabilmesi için sıklıkla kullanılan bir yöntemdir. Özellikle büyük boyutlu ve kompleks yapılı XML dosyaları için en uygun seçenek olarak gösterilmektedir.

SAX yöntemi ile XML dosyalarını düzenleme işlemi yapabilmek için aşağıdaki adımlar takip edilmelidir:

1. İlk olarak, XML dosyasını okuma işlemi yapıldığı gibi, dosya yolunun belirlenmesi ve XML işaret diline uygun olarak açılması gereklidir.

2. Daha sonra, belirli bir düğüme ulaşıldığında yapılacak işlem tanımlanmalıdır. Bu, belirli bir düğüme ulaşıldığında bu düğümün özelliklerini elde etmek, alt düğümleri tarayarak ilerlemek veya içeriklerini değiştirmek olabilir.

3. Son olarak, düzenlenmiş XML dosyası belirtilen dosya adı ve dosya yoluna yazılmalıdır.

SAX yöntemi ile XML dosyalarını düzenleme işlemi hakkında daha iyi anlayabilmek için aşağıdaki örnek kodları inceleyebilirsiniz:

```function startElement($parser, $name, $attrs) { if ($name == 'kitap') { //düğüm adı kitap olan düğümün özellikleri elde ediliyor $yazar = $attrs['yazar']; $baslik = $attrs['baslik']; $fiyat = $attrs['fiyat'];

//yeni fiyat değeri değiştiriliyor $fiyat = $fiyat * 1.1; echo "Kitap Bilgisi: Yazar = $yazar, Başlık = $baslik, Fiyat = $fiyat"; }}

function endElement($parser, $name) { if ($name == 'kitap') { //kitap düğümü kapatılıyor echo "
"; }}

function characterData($parser, $data) { //dosya içeriğinin tamamı okunuyor //düğümler okunarak işlem yapılıyor}

//XML dosyasının yolunun belirlenmesi$xmlDosya = "books.xml";

//SAX işlemci oluşturuluyor$xmlSAX = xml_parser_create();

//işlemciye işlem yapılacağı belirtiliyorxml_set_element_handler($xmlSAX, "startElement", "endElement");xml_set_character_data_handler($xmlSAX, "characterData");

//XML işlemcisi başlatılıyor$fp = fopen($xmlDosya, "r");while ($data = fread($fp, 4096)) { xml_parse($xmlSAX, $data, feof($fp));}

//XML işlemcisi sonlandırılıyorxml_parser_free($xmlSAX);```

Yukarıdaki örnek kodlar, bir XML dosyasındaki kitap düğümlerinin belirli bir oranda fiyatlarının artırılmasına yönelik bir düzenleme işlemi gerçekleştirmektedir. startElement() fonksiyonu, kitap düğümüne ulaşıldığında düğümün özelliklerini elde eder ve fiyatını belirli bir oranda artırır. endElement() fonksiyonu ise düğüm kapatıldığında görüntüleneceklere yönelik işlemleri gerçekleştirir.

SAX yöntemi, XML dosyalarının düzenlenmesi için oldukça uygun olmakla birlikte, DOM yöntemine kıyasla daha kısıtlı bir işlevsellik sunar. Dolayısıyla, düzenlenecek XML dosyasının yapısal açıdan basit olması durumunda tercih edilebilir.


DOM Yöntemi

DOM yöntemi, XML dosyalarını düzenlemek için kullanılan bir diğer yöntemdir. Bu yöntem, doküman modeli olarak bilinen bir nesne yapısını kullanarak XML dosyalarını okuma, yazma ve düzenleme işlemlerini yapar. DOM yöntemi ile XML dosyalarına erişmek ve düzenlemek için DOMDocument sınıfı kullanılır. Aşağıda bu yöntemle XML dosyalarını düzenlemek için adım adım işlem süreci ve örnek kodlar verilmiştir.

  • Adım 1: DOMDocument sınıfını yaratın:
  • $xmlDoc = new DOMDocument();

  • Adım 2: XML dosyasını yükleyin ve yaratılan DOM belgesine atayın:
  • $xmlDoc->load("example.xml");

  • Adım 3: DOM belgesinden bir öğe seçin:
  • $root = $xmlDoc->documentElement;

  • Adım 4: XML öğeleri ekleyin:
  • $newNode = $xmlDoc->createElement("YENİ_ÖĞE");
    $newText = $xmlDoc->createTextNode("YENİ ÖĞE İÇERİĞİ");
    $newNode->appendChild($newText);
    $root->appendChild($newNode);

  • Adım 5: XML öğelerini değiştirin:
  • $newNode->setAttribute("ÖZELLİK", "DEĞER");

  • Adım 6: XML öğelerini silin:
  • $nodeToRemove = $root->getElementsByTagName("SİLİNECEK_ÖĞE")->item(0);
    $root->removeChild($nodeToRemove);

  • Adım 7: Düzenlenen XML dosyasını kaydedin:
  • $xmlDoc->save("example.xml");

Yukarıdaki örnek kodlarla XML dosyaları DOM yöntemi kullanılarak düzenlenebilir. DOM yöntemi, XML dosyasının tamamını hafızada tuttuğu için büyük XML dosyalarının düzenlenmesi için uygun olmayabilir. Ancak, küçük ve orta ölçekli XML dosyalarını düzenlemek için oldukça kullanışlıdır.