Tukarkan XML ke Array Bersekutu dalam PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) adalah salah satu jenis bahasa markup yang digunakan untuk menyimpan data dalam format yang dapat dibaca oleh manusia. Ia berbeza dengan bahasa markup lain. Setiap teg bahasa ini ditentukan oleh pengguna. Menggunakan XML adalah penyelesaian yang lebih baik untuk menyimpan sejumlah kecil data apabila anda tidak mahu menggunakan pangkalan data untuk menyimpan data. Data dari dokumen XML dapat dengan mudah diakses dan digunakan dalam aplikasi web apa pun menggunakan skrip PHP. Bagaimana dokumen XML dapat dihuraikan dan disimpan ke dalam array asosiatif ditunjukkan dalam tutorial ini.

Fungsi yang diperlukan

Beberapa fungsi terbina dalam digunakan untuk menukar kandungan XML menjadi array PHP bersekutu. Tujuan fungsi yang berbeza dijelaskan di bawah.







fail_get_contents ():



Fungsi ini mengembalikan data rentetan dengan menukar sebarang data XML. Ia memerlukan sebarang nama fail XML sebagai argumen.



simplexml_load_string ():





Fungsi ini mengembalikan objek XML dengan menukar data rentetan XML. Ia memerlukan data rentetan XML sebagai argumen.

simplexml_load_file ():



Fungsi ini mengembalikan objek XML dengan menukar kandungan fail XML. Ia mengambil nama fail XML sebagai argumen.

SimpleXMLElement ():

Ini digunakan untuk membuat objek XML dari data XML. Ia mengambil nilai kandungan XML sebagai argumen.

json_encode ():

Ia mengembalikan objek JSON dengan menukar objek XML. Ia mengambil pemboleh ubah objek XML sebagai argumen.

json_decode ():

Ia mengembalikan array PHP bersekutu dengan menukar data JSON. Ia mengambil pemboleh ubah objek JSON sebagai argumen.

Buat Fail XML

Anda akan diminta untuk membuat fail XML atau menentukan data XML dalam skrip untuk mengetahui cara mengubah data XML menjadi array PHP yang bersekutu. Buat fail XML yang bernamaursus.xml dengan kandungan berikut dan simpan di lokasi di mana skrip PHP berada. Fail mengandungi elemen anak di bawah elemen induk. Oleh itu, array gabungan dua dimensi akan dihasilkan setelah menukar fail XML berikut ke dalam array PHP.

kursus.xml

versi='1.0'?>
>
>Pengaturcaraan Web>
>6 bulan>
>
>
>Kegembiraan Pengaturcaraan PHP>
>Alan Forbes>
>Pulau Plum>
>
>
>PHP& MySQL Novice untuk Ninja
Tom Butler & Kevin Yank
Tapak Tapak


Ketua PHP & MySQL Pertama
Lynn Beighley & Michael Morrison
O'Reilly


Contoh-1: Tukarkan kandungan fail XML menjadi susunan bersekutu tanpa memeriksa ralat

Skrip berikut menunjukkan penggunaan fungsi file_get_contents () dan simplexml_load_string () untuk membuat objek XML. Di sini, file courses.xml digunakan untuk penukaran yang dibuat sebelumnya. Seterusnya, fungsi json_encode () dan json_decode () digunakan untuk mendapatkan array bersekutu setelah menukar kandungan fail XML. Sekiranya tidak ada kesalahan dalam kandungan XML, maka tidak ada kesalahan yang akan ditunjukkan oleh skrip berikut. Di sini,

  tag digunakan untuk mencetak susunan dengan cara yang diformat.



// Tentukan fail XML yang ada
$ xml = 'kursus.xml';

// Baca isi penuh fail XML sebagai rentetan XML
$ xmlData = fail_get_contents ($ xml);

// Tukarkan data rentetan XML menjadi objek XML
$ xmlObjek = simplexml_load_string ($ xmlData);

// Tukarkan objek XML menjadi objek JSON
$ jsonObject = json_encode ($ xmlObjek);

// Tukarkan objek JSON menjadi array bersekutu
$ assArray = json_decode ($ jsonObject, benar);

// Cetak struktur array bersekutu
membuang '

';  
print_r ($assArray);
echo '

'
;

?>

Pengeluaran:

Output berikut akan muncul setelah menjalankan skrip PHP. Di sini, susunan dua dimensi dihasilkan berdasarkan kandungan fail XML ,ursus.xml.

Contoh-2: Tukarkan kandungan fail XML menjadi susunan bersekutu dengan kesalahan pemeriksaan

Lebih baik memeriksa ralat semasa menukar XML menjadi array bersekutu. Ini akan membantu pengekod untuk menyahpepijat kod jika pemeriksaan ralat dilaksanakan dalam skrip. Skrip berikut menunjukkan cara-cara untuk menukar kandungan fail XML menjadi susunan bersekutu dengan menggunakan fungsi simplexml_load_file () dengan pengendalian ralat. Fungsi libxml_use_internal_errors () digunakan dengan nilai BENAR untuk membolehkan pengendalian ralat. Sekiranya kandungan fail XML yang digunakan dalam skrip berisi kesalahan, maka fungsi simplexml_load_file () akan kembali salah, dan pesan kesalahan akan dicetak dengan menggunakan fungsi libxml_get_errors (). Sekiranya tidak ada ralat dalam fail XML, maka kandungan fail tersebut akan ditukarkan dengan betul menjadi susunan gabungan dua dimensi.



// Dayakan pengendalian ralat pengguna
libxml_use_internal_errors (BENAR);

// Buat Objek XML
$ objXml = simplexml_load_file ('kursus.xml');

// Kesalahan cetak jika objek XML kembali palsu
sekiranya ($ objXml === SALAH) {
membuang 'Terdapat kesalahan menguraikan fail XML. n';
untuk setiap( libxml_get_errors () sebagai ralat $) {
membuang ralat $->mesej;
}
jalan keluar ;
}

// Tukarkan objek XML menjadi objek JSON
$ objJson = json_encode ($ objXml);
// Tukarkan objek JSON menjadi array bersekutu
$ assarr = json_decode ($ objJson, BENAR);

// Cetak struktur array bersekutu
membuang '
';  
print_r ($assarr);
echo '
'
;

?>

Pengeluaran:

Output berikut akan muncul setelah menjalankan skrip PHP. Di sini, tiada ralat dalam fail XML. Oleh itu, susunan dua dimensi telah dihasilkan seperti contoh sebelumnya berdasarkan kandungan fail XML, courses.xml.

Contoh-3: Tukarkan kandungan XML menjadi larik bersekutu

Skrip berikut menunjukkan cara menukar data XML menjadi array bersekutu dengan menggunakan fungsi SimpleXMLElement (). Dalam skrip, kandungan XML disimpan ke dalam pemboleh ubah bernama $ xml yang digunakan sebagai argumen fungsi, SimpleXMLElement (). Seterusnya, fungsi json_encode () dan json_decode () digunakan untuk mendapatkan susunan bersekutu setelah menukar kandungan fail XML.



// Tentukan pemboleh ubah XML
$ xml = <<


[dilindungi e-mel]

12 / A, Dhanmondi
Dhaka



[dilindungi e-mel]

156, Motif
Dhaka



[dilindungi e-mel]

21 / B, Mogbazar
Dhaka



XML
;

// Buat objek XML
$ xmlObjek = baruSimpleXMLElement($ xml);
// Buat Objek JSON
$ jsonObject = json_encode ($ xmlObjek);
// Tukarkan objek JSON menjadi array bersekutu
$ assArray = json_decode ($ jsonObject, benar);

// Cetak struktur array bersekutu
membuang '
';  
print_r ($assArray);
echo '
'
;

?>

Pengeluaran:

Output berikut akan muncul setelah menjalankan skrip PHP. Di sini, susunan dua dimensi dihasilkan berdasarkan kandungan pemboleh ubah XML, $ xml.

Kesimpulan:

Terdapat tiga cara berbeza untuk menukar kandungan XML menjadi larik bersekutu yang ditunjukkan dalam tutorial ini. Ini akan membantu pembaca mengetahui cara bekerja dengan data XML dan menguraikan data dari kandungan XML dengan menggunakan skrip PHP dengan mudah.