PHP XML

XML, yapılandırılmış verileri depolamak ve aktarmak için kullanılan bir işaretleme dilidir. JSON, modern APIs'da çok yaygın olmasına rağmen, XML, eski uygulamalar, RSS beslemeleri, site haritası dosyaları, ödeme entegrasyonları, belge formatları, kurumsal sistemler ve veri alışverişi hizmetleri dahil olmak üzere birçok sistemde hâlâ kullanılmaktadır.

PHP, XML verilerini okumak ve işlemek için çeşitli yollar sağlar. PHP’deki en yaygın XML araçları arasında Simple XML, Expat ayrıştırıcı ve DOM ayrıştırıcı bulunur. Her ayrıştırıcının farklı bir stili vardır ve farklı durumlarda faydalıdır.

Bu makalede, öğrenme yolunda gösterilen ana PHP XML konuları açıklanmaktadır: PHP XML ayrıştırıcıları, PHP Simple XML ayrıştırıcısı, PHP Simple XML get, PHP XML Expat ayrıştırıcısı ve PHP DOM ayrıştırıcısı.

PHP XML Ayrıştırıcılar

XML ayrıştırıcısı, XML içeriğini okuyan ve PHP’nin içindeki verilere erişmesine olanak tanıyan bir araçtır. Ayrıştırıcı olmadan XML yalnızca düz metindir. Ayrıştırıcı, PHP’nin XML yapısını, öğelerini, niteliklerini ve metin değerlerini anlamasına yardımcı olur.

Basit bir XML belgesi şöyle görünebilir:

<?xml version="1.0" encoding="UTF-8"?>
<book>
    <title>Learning PHP XML</title>
    <author>Adnan Mehrat</author>
    <year>2026</year>
</book>

Bu XML belgesi, adında bir kök öğe içeriyorkitap. İçinde alt öğeler vardır: başlık, yazar ve yıl.

PHP, bu XML’i farklı ayrıştırıcılar kullanarak ayrıştırabilir. En yaygın yaklaşımlar şunlardır:

  • Simple XML:kullanımı kolay ve basit XML belgeleri için uygundur.

  • Expat ayrıştırıcı:XML’i adım adım işlemek için kullanışlı olay tabanlı ayrıştırıcı.

  • DOM ayrıştırıcısı:XML’i bir belge nesne modeline yükler ve gelişmiş gezinme ve değişiklik yapılmasına olanak tanır.

En iyi ayrıştırıcı, XML belgesinin türüne, boyutuna ve onunla ne yapmanız gerektiğine bağlıdır.

Neden XML Kullanılıyor?

XML, yapılandırılmış bilgileri okunabilir bir biçimde temsil etmek için kullanılır. Verilerin özel etiketler kullanılarak düzenlenmesine olanak tanır. HTML'nun aksine, XML'nun önceden tanımlanmış ekran etiketleri yoktur. Bunun yerine geliştiriciler etiketleri veri yapısına göre tanımlar.

Örneğin, bir web sitesi site haritası genellikle XML dilinde yazılır. URL'leri, son değişiklik tarihlerini, değişiklik sıklığını ve öncelik değerlerini içerebilir.

<url>
    <loc>https://example.com/article</loc>
    <lastmod>2026-06-10</lastmod>
    <changefreq>weekly</changefreq>
</url>

PHP, bu XML’i okuyabilir ve sayfa URL'si ve son değişiklik tarihi gibi değerleri çıkarabilir.

XML ayrıca RSS beslemelerinde, SOAP APIs'da, yapılandırma dosyalarında, veri aktarımlarında ve eski kurumsal entegrasyonlarda da yaygındır. Bu nedenle, PHP’de XML ayrıştırmayı öğrenmek, arka uç geliştiriciler için hala faydalıdır.

PHP Simple XML Ayrıştırıcı

Simple XML, PHP’de XML ile çalışmanın en kolay yollarından biridir. XML’i nesne benzeri bir yapıya dönüştürerek geliştiricilerin nesne sözdizimini kullanarak XML öğelerine erişmesine olanak tanır.

Simple XML, XML yapısı basit ve öngörülebilir olduğunda kullanışlıdır.

Aşağıdaki örnek XML’i bir dizeden yükler:

<?php
$xmlText = '
<book>
    <title>Learning PHP XML</title>
    <author>Adnan Mehrat</author>
    <year>2026</year>
</book>
';

$xml = simplexml_load_string($xmlText);

echo $xml->title;
echo $xml->author;
echo $xml->year;
?>

simplexml_load_string()işlev bir dizeden XML okur ve bir Simple XML nesnesi döndürür.

XML bir dosyanın içinde saklanıyorsa şunu kullanabilirsiniz:simplexml_load_file().

<?php
$xml = simplexml_load_file("book.xml");

echo $xml->title;
?>

Simple XML genellikle RSS beslemelerini, site haritası dosyalarını, basit yapılandırma dosyalarını ve harici hizmetlerden gelen XML yanıtlarını okumak için kullanılır.

Simple XML ile XML Öğelerini Okuma

Simple XML alt öğelerin okunmasını kolaylaştırır. Bir XML belgesi birden fazla öğe içeriyorsa, bunları kullanarak bunlar arasında geçiş yapabilirsiniz.her biri.

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book>
        <title>PHP Basics</title>
        <author>Adnan</author>
    </book>
    <book>
        <title>PHP OOP</title>
        <author>Noor</author>
    </book>
</books>

Kitapları şu şekilde okuyabilirsiniz:

<?php
$xml = simplexml_load_file("books.xml");

foreach ($xml->book as $book) {
    echo $book->title;
    echo $book->author;
}
?>

Bu stil basit ve okunabilir olduğundan Simple XML'i yeni başlayanlar için iyi bir seçim haline getirir.

PHP Simple XML - Al

Simple XML ayrıca nitelikleri, öğe adlarını, ad alanlarını ve çocukları da alabilir. Bu önemlidir çünkü birçok XML belgesi, bilgileri yalnızca öğelerin içinde değil, özniteliklerin içinde de saklar.

Örneğin, bu XML şu nitelikleri kullanır:

<books>
    <book id="1" category="programming">
        <title>PHP Basics</title>
    </book>
    <book id="2" category="web">
        <title>Laravel Guide</title>
    </book>
</books>

Nitelikleri kullanarak alabilirsiniz.nitelikler()Yöntem.

<?php
$xml = simplexml_load_file("books.xml");

foreach ($xml->book as $book) {
    $attributes = $book->attributes();

    echo $attributes["id"];
    echo $attributes["category"];
    echo $book->title;
}
?>

Simple XML ayrıca şunları sağlar:çocuklar()alt öğeleri alma yöntemi.

<?php
$xml = simplexml_load_file("books.xml");

foreach ($xml->children() as $child) {
    echo $child->getName();
}
?>

getName()yöntem geçerli XML öğesinin adını döndürür.

<?php
$xml = simplexml_load_string("<book><title>PHP XML</title></book>");

echo $xml->getName();
?>

Yapının meta veriler, kimlikler, kategoriler, dil kodları veya özel nitelikler içerdiği XML dosyalarıyla çalışırken özniteliklerin, adların ve alt öğelerin alınması yararlı olur.

Simple XML ve Hata İşleme

XML ile çalışırken belge geçersiz veya bozuk olabilir. Bu nedenle ayrıştırma hatalarının ele alınması önemlidir.

Kullanabilirsinlibxml_use_internal_errors()XML hatalarını manuel olarak kontrol etmek için.

<?php
libxml_use_internal_errors(true);

$xmlText = "<book><title>PHP XML</book>";

$xml = simplexml_load_string($xmlText);

if ($xml === false) {
    foreach (libxml_get_errors() as $error) {
        echo $error->message;
    }

    libxml_clear_errors();
} else {
    echo $xml->title;
}
?>

Bu, uygulamanın kullanıcılara ham ayrıştırıcı uyarıları göstermesini önlemeye yardımcı olur ve geliştiricilerin XML hatalarını daha temiz bir şekilde ele almasına olanak tanır.

PHP XML Yabancı Ayrıştırıcı

Expat ayrıştırıcısı olay tabanlı bir XML ayrıştırıcısıdır. Bu, XML belgesinin tamamını Simple XML veya DOM gibi bir nesne ağacına yüklemediği anlamına gelir. Bunun yerine XML’i okur ve açılış etiketlerini, kapanış etiketlerini ve metin içeriğini bulduğunda işlevleri tetikler.

Expat, XML’i adım adım işlemek istediğinizde kullanışlıdır. Aynı anda tüm belge yapısıyla çalışmayı gerektirmediğinden daha büyük XML dosyaları için yararlı olabilir.

Expat ayrıştırıcısı işleyici işlevlerini kullanır. Bu işlevler, belirli XML olayları gerçekleştiğinde çağrılır.

<?php
function startElement($parser, $name, $attributes) {
    echo "Start element: " . $name;
}

function endElement($parser, $name) {
    echo "End element: " . $name;
}

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

$xmlText = "
<book>
    <title>PHP XML</title>
    <author>Adnan</author>
</book>
";

$parser = xml_parser_create();

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

xml_parse($parser, $xmlText);

xml_parser_free($parser);
?>

Bu örnekte PHP çağrılarıstartElement()bir açılış etiketi bulduğunda,endElement()bir kapanış etiketi bulduğunda vekarakterVerileri()metin içeriğini bulduğunda.

Expat, Simple XML'den daha karmaşıktır ancak XML'nun nasıl işlendiği konusunda daha fazla kontrol sağlar.

Expat Ayrıştırıcı Ne Zaman Kullanılır?

Expat ayrıştırıcısı, XML dosyası büyük olduğunda veya belgeyi sırayla işlemek istediğinizde yararlı olabilir. Olay tabanlı bir ayrıştırıcı olarak çalıştığı için çok büyük XML dosyalarını belleğe yüklerken oluşabilecek bazı bellek kullanım sorunlarını önleyebilir.

Olası kullanım durumları şunları içerir:

  • Büyük XML dışa aktarımları okunuyor.

  • XML günlükleri işleniyor.

  • Akışlı XML verileri ayrıştırılıyor.

  • Büyük bir XML dosyasından yalnızca belirli öğelerin çıkarılması.

  • Özel XML işleme mantığı oluşturma.

Normal küçük XML dosyaları için Simple XML genellikle daha kolaydır. Karmaşık düzenleme için DOM daha iyi olabilir. Olaya dayalı okuma için Expat faydalıdır.

PHP DOM Ayrıştırıcı

DOM ayrıştırıcısı XML’i bir belge nesne modeline yükler. Bu, XML'nun, PHP’nin gezinebileceği, okuyabileceği, değiştirebileceği, oluşturabileceği veya silebileceği bir düğüm ağacı haline geldiği anlamına gelir.

Gelişmiş XML kontrolüne ihtiyaç duyduğunuzda DOM, Simple XML'den daha güçlüdür. XML belgelerini düzenlerken veya karmaşık yapılarla çalışırken kullanışlıdır.

Aşağıdaki örnek, XML’i şunu kullanarak yükler:DOMBelgesi.

<?php
$xmlText = '
<book>
    <title>Learning PHP XML</title>
    <author>Adnan Mehrat</author>
</book>
';

$dom = new DOMDocument();

$dom->loadXML($xmlText);

$title = $dom->getElementsByTagName("title")->item(0)->nodeValue;

echo $title;
?>

getElementsByTagName()yöntem, belirli bir etiket adına sahip öğeleri döndürür.düğüm Değeriözelliği seçilen düğümün metin değerini döndürür.

DOM ayrıca XML’i bir dosyadan da yükleyebilir.

<?php
$dom = new DOMDocument();

$dom->load("book.xml");

echo $dom->getElementsByTagName("author")->item(0)->nodeValue;
?>

DOM, XML ağacı üzerinde ayrıntılı kontrole ihtiyaç duyduğunuzda kullanışlıdır.

DOM Ayrıştırıcı ile XML Oluşturma

DOMDocument ayrıca XML belgeleri oluşturmak için de kullanılabilir. Bu, uygulamanızın site haritaları, yayınlar, dışa aktarmalar veya entegrasyon dosyaları gibi XML çıktısı oluşturması gerektiğinde kullanışlıdır.

<?php
$dom = new DOMDocument("1.0", "UTF-8");
$dom->formatOutput = true;

$book = $dom->createElement("book");

$title = $dom->createElement("title", "PHP XML Guide");
$author = $dom->createElement("author", "Adnan Mehrat");

$book->appendChild($title);
$book->appendChild($author);

$dom->appendChild($book);

echo $dom->saveXML();
?>

Bu kod, XML’i manuel olarak dize olarak yazmak yerine PHP kullanarak bir XML belgesi oluşturur.

Belge yapısı karmaşık olduğunda XML oluşturmak için DOM'un kullanılması daha güvenli ve temizdir.

XML’i DOM Ayrıştırıcı ile değiştirme

DOM ayrıştırıcısı mevcut XML belgelerini değiştirebilir. Düğüm değerlerini değiştirebilir, yeni öğeler ekleyebilir, öğeleri kaldırabilir ve güncellenmiş XML’i kaydedebilirsiniz.

<?php
$dom = new DOMDocument();
$dom->load("book.xml");

$title = $dom->getElementsByTagName("title")->item(0);
$title->nodeValue = "Updated PHP XML Guide";

$dom->save("book.xml");
?>

Ayrıca yeni bir öğe de ekleyebilirsiniz.

<?php
$dom = new DOMDocument();
$dom->load("book.xml");

$book = $dom->getElementsByTagName("book")->item(0);

$year = $dom->createElement("year", "2026");

$book->appendChild($year);

$dom->save("book.xml");
?>

Bu, PHP’nin XML yapılandırma dosyalarını güncellemesi, XML dışa aktarmaları oluşturması veya XML belgelerini program aracılığıyla değiştirmesi gerektiğinde DOM'u kullanışlı hale getirir.

Simple XML vs Expat vs DOM

PHP birden fazla XML ayrıştırıcı sağlar çünkü farklı projeler farklı yaklaşımlara ihtiyaç duyar.

Simple XMLXML yapısı basit olduğunda ve yalnızca değerleri kolayca okumanız gerektiğinde en iyisidir. Yeni başlayanlar için uygundur ve daha az kod gerektirir.

Yabancıolaya dayalı ayrıştırma istediğinizde veya XML’i adım adım işlemeniz gerektiğinde en iyisidir. Büyük XML belgeleri veya akış tarzı işleme için yararlı olabilir.

DOMXML belgesi üzerinde gelişmiş kontrole ihtiyaç duyduğunuzda en iyisidir. Bir ağaç yapısını kullanarak XML’i okuyabilir, oluşturabilir, düzenleyebilir ve kaydedebilir.

Pratik bir karşılaştırma:

  • KullanımSimple XMLRSS beslemeleri, site haritaları, basit XML yanıtları ve temel okumalar için.

  • KullanımYabancıolaya dayalı ayrıştırma ve büyük XML işleme için.

  • KullanımDOMXML belgelerini oluşturmak, düzenlemek ve derinlemesine gezinmek için.

Pratik XML Örneği: Site Haritasını Okumak

Gerçek dünyadaki yaygın bir XML örneği, bir site haritası dosyasını okumaktır. Bir site haritası, arama motorlarının tarayabileceği URL’leri içerir.

<urlset>
    <url>
        <loc>https://example.com/</loc>
        <lastmod>2026-06-10</lastmod>
    </url>
    <url>
        <loc>https://example.com/blog</loc>
        <lastmod>2026-06-09</lastmod>
    </url>
</urlset>

Bu site haritasını Simple XML ile okuyabilirsiniz.

<?php
$xml = simplexml_load_file("sitemap.xml");

foreach ($xml->url as $url) {
    echo $url->loc;
    echo $url->lastmod;
}
?>

Bu örnek, Simple XML'in basit yapılandırılmış dosyalar için neden yararlı olduğunu göstermektedir. XML öğelerine temiz ve okunabilir bir şekilde erişmenizi sağlar.

PHP XML için Güvenlik Notları

Harici kaynaklardan XML ile çalışırken güvenlik önemlidir. XML, kullanıcı yüklemelerinden, üçüncü taraf APIs'dan, yayınlardan veya harici hizmetlerden gelebilir.

Önemli güvenlik uygulamaları şunları içerir:

  • İşlemeden önce XML’i doğrulayın.

  • Ayrıştırıcı hatalarını güvenli bir şekilde ele alın.

  • Bilinmeyen kaynaklardan gelen XML içeriğine güvenmeyin.

  • XML değerlerini HTML'da kaçmadan görüntülemekten kaçının.

  • Çok büyük XML dosyalarına dikkat edin çünkü bunlar bellek tüketebilir.

  • Gerekmediğinde güvenli olmayan harici varlık işlemeyi devre dışı bırakın veya önleyin.

XML verileri bir HTML sayfasında gösterilecekse, şunu kullanarak çıktıdan çıkın:htmlspecialchars().

<?php
echo htmlspecialchars((string) $xml->title, ENT_QUOTES, "UTF-8");
?>

Bu, güvenli olmayan metnin HTML veya JavaScript olarak yorumlanmasını önlemeye yardımcı olur.

Sonuç

PHP, XML ile çalışmak için çeşitli yararlı araçlar sağlar. Simple XML, basit XML belgelerini okumak için kolay ve pratiktir. Expat, adım adım işleme için olaya dayalı ayrıştırma sağlar. DOMDocument, XML belgelerini okumak, oluşturmak, düzenlemek ve kaydetmek için gelişmiş kontrol sağlar.

PHP XML ayrıştırıcılarını anlamak, site haritaları, RSS akışları, XML APIs, dışa aktarmalar, yapılandırma dosyaları ve eski sistemlerle çalışmak için kullanışlıdır. JSON bugün çok popüler olsa da XML birçok gerçek dünya arka uç projesinde önemini koruyor.

PHP’de XML ayrıştırmayı öğrendikten sonraki adım, RSS beslemelerini okuyarak, bir site haritası oluşturarak, XML API yanıtlarını ayrıştırarak ve veritabanı kayıtlarından XML dışa aktarma dosyaları oluşturarak pratik yapmaktır.