PHP'de XML'i İlişkili Diziye Dönüştür

Convert Xml Associative Array Php



XML (Genişletilebilir İşaretleme Dili), verileri insan tarafından okunabilir bir biçimde depolamak için kullanılan bir tür biçimlendirme dilidir. Diğer işaretleme dillerinden farklıdır. Bu dilin her etiketi kullanıcı tanımlıdır. Veri depolamak için herhangi bir veritabanı kullanmak istemiyorsanız, az miktarda veri depolamak için XML kullanmak daha iyi bir çözümdür. XML belgesindeki verilere, bir PHP betiği kullanılarak herhangi bir web uygulamasında kolayca erişilebilir ve kullanılabilir. XML belgesinin nasıl ayrıştırılıp bir ilişkisel dizide saklanabileceği bu öğreticide gösterilmektedir.

Gerekli Fonksiyonlar

Bazı yerleşik işlevler, XML içeriğini ilişkisel bir PHP dizisine dönüştürmek için kullanılır. Farklı işlevlerin amaçları aşağıda açıklanmıştır.







file_get_contents():



Bu işlev, herhangi bir XML verisini dönüştürerek dize verilerini döndürür. Argüman olarak herhangi bir XML dosya adını alır.



simplexml_load_string():





Bu işlev, XML dizesi verilerini dönüştürerek XML nesnesini döndürür. Argüman olarak XML dize verilerini alır.

simplexml_load_file():



Bu işlev, XML dosya içeriğini dönüştürerek XML nesnesini döndürür. Argüman olarak XML dosya adını alır.

SimpleXMLElement ():

XML verilerinden bir XML nesnesi oluşturmak için kullanılır. Argüman olarak XML içerik değerini alır.

json_encode():

XML nesnesini dönüştürerek JSON nesnesini döndürür. Argüman olarak XML nesne değişkenini alır.

json_decode():

JSON verilerini dönüştürerek ilişkisel PHP dizisini döndürür. JSON nesne değişkenini argüman olarak alır.

XML Dosyası Oluştur

XML verilerini ilişkisel bir PHP dizisine dönüştürmenin yolunu bilmek için bir XML dosyası oluşturmanız veya komut dosyasında XML verilerini tanımlamanız gerekecektir. Aşağıdaki içeriğe sahip Course.xml adlı bir XML dosyası oluşturun ve bunu PHP betiğinin bulunduğu konumda saklayın. Dosya, bir üst öğenin altındaki alt öğeleri içerir. Bu nedenle, aşağıdaki XML dosyasını bir PHP dizisine dönüştürdükten sonra iki boyutlu bir ilişkisel dizi oluşturulacaktır.

dersler.xml

versiyon='1.0'?>
>
>Web Programlama>
>6 ay>
>
>
>PHP Programlamanın Keyfi>
>Alan Forbes>
>Erik Adası>
>
>
>PHP& MySQL Acemi'den Ninja'ya
Tom Butler ve Kevin Yank
SiteNoktası


Önce PHP ve MySQL'e Başlayın
Lynn Beighley ve Michael Morrison
O'Reilly


Örnek-1: Hatayı kontrol etmeden XML dosya içeriğini ilişkisel bir diziye dönüştürün

Aşağıdaki komut dosyası, XML nesnesi oluşturmak için file_get_contents() ve simplexml_load_string() işlevlerinin kullanımlarını gösterir. Burada, daha önce oluşturulmuş olan dönüştürme için Course.xml dosyası kullanılır. Daha sonra, json_encode() ve json_decode() işlevi, XML dosya içeriğini dönüştürdükten sonra ilişkisel diziyi almak için kullanılır. XML içeriğinde herhangi bir hata yoksa, aşağıdaki komut dosyası tarafından herhangi bir hata gösterilmeyecektir. Burada, |__+_| etiketi, diziyi biçimlendirilmiş bir şekilde yazdırmak için kullanılır.



//Mevcut XML dosyasını tanımlayın
$xml = 'dersler.xml';

//XML dosyasının tüm içeriğini XML dizesi olarak okuyun
$xmlData = file_get_contents ($xml);

//XML dize verilerini XML nesnesine dönüştürün
$xmlObject = simplexml_load_string ($xmlData);

//XML nesnesini JSON nesnesine dönüştür
$jsonObject = json_encode ($xmlObject);

//JSON nesnesini ilişkisel bir diziye dönüştürün
$assArray = json_decode ($jsonObject, NS);

// İlişkisel dizinin yapısını yazdır
dışarı attı '
  
';

?>

Çıktı:

PHP betiğini çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Burada, XML dosyasının, Course.xml dosyasının içeriğine dayalı olarak iki boyutlu bir dizi oluşturulur.

Örnek-2: XML dosya içeriğini kontrol hatası olan bir ilişkisel diziye dönüştürün

XML'i bir ilişkisel diziye dönüştürürken hatayı kontrol etmek daha iyidir. Komut dosyasında hata denetimi uygulanırsa, kodlayıcının kodda hata ayıklamasına yardımcı olur. Aşağıdaki komut dosyası, hata işleme ile simplexml_load_file() işlevini kullanarak XML dosya içeriğini ilişkisel bir diziye dönüştürmenin yollarını gösterir. Hata işlemeyi etkinleştirmek için libxml_use_internal_errors() işlevi DOĞRU değerle kullanılır. Komut dosyasında kullanılan XML dosya içeriği herhangi bir hata içeriyorsa, simplexml_load_file() işlevi false döndürür ve libxml_get_errors() işlevi kullanılarak hata mesajı yazdırılır. XML dosyasında herhangi bir hata yoksa, dosyanın içeriği düzgün bir şekilde iki boyutlu bir ilişkisel diziye dönüştürülür.



//Kullanıcı hatası işlemeyi etkinleştir
libxml_use_internal_errors (NS);

//XML Nesnesi Oluştur
$ objXml = simplexml_load_file ('dersler.xml');

//XML nesnesi false döndürürse yazdırma hatası
Eğer ($ objXml === YANLIŞ) {
dışarı attı 'XML dosyası ayrıştırılırken hatalar oluştu. ';
her biri için( libxml_get_errors () olarak $ hatası) {
dışarı attı $ hatası->İleti;
}
çıkış ;
}

//XML nesnesini JSON nesnesine dönüştür
$ nesne = json_encode ($ objXml);
//JSON nesnesini ilişkisel bir diziye dönüştürün
$assar = json_decode ($ nesne, NS);

// İlişkisel dizinin yapısını yazdır
dışarı attı '
';  
print_r ($assArray);
echo '
'
;

?>

Çıktı:

PHP betiğini çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Burada, XML dosyasında herhangi bir hata bulunmamaktadır. Böylece, önceki örnekteki gibi iki boyutlu bir dizi, XML dosyasının, Course.xml dosyasının içeriğine dayalı olarak oluşturulmuştur.

Örnek-3: XML içeriğini bir ilişkisel diziye dönüştürün

Aşağıdaki komut dosyası, SimpleXMLElement() işlevini kullanarak XML verilerini ilişkisel bir diziye dönüştürmenin yolunu gösterir. Komut dosyasında, XML içeriği, SimpleXMLElement() işlevinin bağımsız değişkeni olarak kullanılan $xml adlı bir değişkende depolanır. Daha sonra, json_encode() ve json_decode() işlevi, XML dosya içeriğini dönüştürdükten sonra ilişkisel diziyi almak için kullanılır.



//XML değişkenini tanımlayın
$xml = <<


[e-posta korumalı]

12 / A, Dhanmondi
Dakka



[e-posta korumalı]

156, Motif
Dakka



[e-posta korumalı]

21 / B, Mogbazar
Dakka



XML
;

//XML nesnesi oluştur
$xmlObject = yeniSimpleXMLEeleman($xml);
//JSON Nesnesi Oluştur
$jsonObject = json_encode ($xmlObject);
//JSON nesnesini ilişkisel bir diziye dönüştürün
$assArray = json_decode ($jsonObject, NS);

// İlişkisel dizinin yapısını yazdır
dışarı attı '
';  
print_r ($assarr);
echo '
'
;

?>

Çıktı:

PHP betiğini çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Burada, $xml XML değişkeninin içeriğine dayalı olarak iki boyutlu bir dizi oluşturulur.

Çözüm:

Bu öğreticide gösterilen, XML içeriğini bir ilişkisel diziye dönüştürmenin üç farklı yolu vardı. Bu, okuyucuların XML verileriyle çalışmanın yolunu bilmelerine ve bir PHP betiği kullanarak XML içeriğindeki verileri kolayca ayrıştırmalarına yardımcı olacaktır.