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'?>>
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.