PHP Dersleri

PHP ile Diziyi XML’e ve XML’i Diziye Çevirme

XML (Genişletilebilir Biçimlendirme Dili), bilgilerin okunaklı kılınmasını sağlayan bir biçimlendirme dilidir. XML genellikle veri depolamak ve depolanan verilerin bir yerlere okutulması için kullanılmaktadır.

XML ile veritabanında yer alan bilgileri farklı sistemlere entegre etmek için çıktı olarak verebilirsiniz. Aynı zamanda XML verilerini de veritabanınıza işlemek için kullanabilirsiniz. XML çok sık kullanılan bir sistem olduğu için de bir diziyi XML’e çevirmek yada XML bir yapıyı dizi olarak almak oldukça önemlidir.

PHP Programlama dilini kullanarak dizi(array) olarak yer alan bir veriyi nasıl XML’e çevirebileceğimizi ve aynı zamanda XML olarak var olan değerleri nasıl dizi(array) olarak elde edebileceğimizden bahsedeceğim.

PHP ile Diziyi XML’e Çevirme

PHP Programlama dilini kullanarak bir diziyi XML’e çevirmek için bir kütüphaneden yardım alacağız. Bu kütüphane, dizide yer alan bilgileri XML’e entegre etmek için kullanılmaktadır.

function createXML($data) {
    $title      = $data['title'];
    $rowCount   = count($data['users']);
    $xmlDoc = new DOMDocument();
    $root = $xmlDoc->appendChild($xmlDoc->createElement("user_info"));
    $root->appendChild($xmlDoc->createElement("title",$title));
    $root->appendChild($xmlDoc->createElement("totalRows",$rowCount));
    $tabUsers = $root->appendChild($xmlDoc->createElement('rows'));
    foreach($data['users'] as $user){
        if(!empty($user)){
            $tabUser = $tabUsers->appendChild($xmlDoc->createElement('user'));
            foreach($user as $key=>$val){
                $tabUser->appendChild($xmlDoc->createElement($key, $val));
            }
        }
    }
    header("Content-Type: text/plain");
    $xmlDoc->formatOutput = true;
    $file_name = str_replace(' ', '_',$title).'_'.time().'.xml';
    $xmlDoc->save($file_name);
    return $file_name;
}

Yukarıda yer alan kodlar, diziyi XML’e çevirmek için gerekli olan kütüphaneye aittir. Bu kodlar sayesinde kolaylıkla dizileri XML’e çevirebilirsiniz. Aynı zamanda farklı XML şablonu oluşturmak için kod üzerinde oynama yapabilirsiniz.

$data = array(
    'title' => 'Users Information',
    'users' => array(
        array('name' => 'ibrahim Çevrük', 'email' => 'ibrahim@cevruk.com'),
        array('name' => 'Ceylin Çevrük', 'email' => 'ceylin@cevruk.com'),
        array('name' => 'Ömer Sercan Yücel', 'email' => 'omer@yucel.com')
    )
);

Yukarıdaki kodlarda da XML’e çevrilmesi istenilen dizi değişken yer almaktadır. Bu diziyi XML yapısına çevirmek istediğimizi belirtmek için de createXML() değerinin içerisinde ileterek kütüphaneden işlem yapılmasını sağlayabilirsiniz.

echo createXML($data);

Bu şekilde hazırladığımızda kütüphane yardımı ile dizi değişkende yer alan bilgiler XML olarak çıktı verecektir. İşlem sonrasında XML olarak dosya ana dizine kayıt edilecektir.

<user_info>
<title>Users Information</title>
<totalRows>3</totalRows>
<rows>
<user>
<name>ibrahim Çevrük</name>
<email>ibrahim@cevruk.com</email>
</user>
<user>
<name>Ceylin Çevrük</name>
<email>ceylin@cevruk.com</email>
</user>
<user>
<name>Ömer Sercan Yücel</name>
<email>omer@yucel.com</email>
</user>
</rows>
</user_info>

Dizi değişkeni XML’e aktardığımızda yukarıdaki gibi bir yapıya sahip olmuş oluyoruz.

XML Dosyasını PHP Diziye Çevirme

Bir XML dosyasınındaki verileri okutmak ve dizi olarak tüm verilere ulaşmak için aşağıdaki adımları uygulamak gerekecektir.

  • XML dosyasını okutmak için file_get_contents() fonksiyonu kullanılmalıdır.
  • PHP’de simplexml_load_string() işlevini kullanarak XML dizesini bir nesneye dönüştürün.
  • Json_encode() işlevini kullanarak nesneyi JSON’a dönüştürün.
  • JSON verilerini json_decode() işlevini kullanarak ilişkilendirilebilir diziye dönüştürün.

Bu adımları gerçekleştirerek, oluşturmuş olduğumuz XML dosyasını diziye çevirelim.

<?php
$path       = "cevir.xml";
$xmlfile    = file_get_contents($path);
$xml        = simplexml_load_string($xmlfile);
$json       = json_encode($xml);
$xmlArr     = json_decode($json, true);

print_r($xmlArr);
?>

Yukarıdaki gibi belirlenen XML dosyasını açtıktan sonra dizi olarak değerleri elde edebilirsiniz. Bu kodları çalıştırdığımızdaysa aşağıdaki gibi sonuç elde etmiş olacağız.

Array
(
    [title] => Users Information
    [totalRows] => 3
    [rows] => Array
        (
            [user] => Array
                (
                    [0] => Array
                        (
                            [name] => ibrahim Çevrük
                            [email] => ibrahim@cevruk.com
                        )

                    [1] => Array
                        (
                            [name] => Ceylin Çevrük
                            [email] => ceylin@cevruk.com
                        )

                    [2] => Array
                        (
                            [name] => Ömer Sercan Yücel
                            [email] => omer@yucel.com
                        )

                )

        )

)

Böylece XML’de yer alan verileri PHP programlama dili için dizi haline getirmiş oluyoruz.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir