Pada artikel ini, kita akan menampilkan data yang ada dalam file XML di halaman web menggunakan PHP melalui server XAMPP. PHP adalah bahasa skrip sisi server yang terutama untuk memproses data web. XML adalah singkatan dari bahasa markup yang dapat diperluas
Persyaratan
server XAMPP
Sintaksis
<root> <child> <subchild>.....</subchild> </child> </root>Mendekati. Kami akan menggunakan terutama dua fungsi dalam kode PHP kami. Fungsi simplexml_load_file() digunakan untuk mengonversi dokumen XML menjadi objek
Contoh berikut akan menunjukkan bagaimana halaman web dapat mengambil informasi dari file XML dengan AJAX
Contoh
Info CD akan tercantum di sini
Contoh Dijelaskan - Halaman HTML
Saat pengguna memilih CD pada daftar dropdown di atas, fungsi bernama "showCD()" dijalankan. Fungsi ini dipicu oleh event "onchange".
Pilih CD
Info CD akan tercantum di sini
Fungsi showCD() melakukan hal berikut
- Periksa apakah CD dipilih
- Buat objek XMLHttpRequest
- Buat fungsi yang akan dijalankan saat respons server siap
- Kirim permintaan ke file di server
- Perhatikan bahwa parameter (q) ditambahkan ke URL (dengan konten daftar tarik-turun)
File PHP
Halaman di server yang dipanggil oleh JavaScript di atas adalah file PHP bernama "getcd. php"
Skrip PHP memuat dokumen XML, "cd_catalog. xml", menjalankan kueri terhadap file XML, dan mengembalikan hasilnya sebagai HTML
SimpleXML menyediakan cara mudah untuk mendapatkan nama elemen, atribut, dan konten tekstual jika Anda mengetahui struktur atau tata letak dokumen XML
SimpleXML mengubah dokumen XML menjadi struktur data yang dapat Anda ulangi seperti kumpulan array dan objek
Dibandingkan dengan parser DOM atau Expat, SimpleXML membutuhkan lebih sedikit baris kode untuk membaca data teks dari suatu elemen
Instalasi
Dari PHP 5, fungsi SimpleXML adalah bagian dari inti PHP. Tidak diperlukan instalasi untuk menggunakan fungsi-fungsi ini
PHP SimpleXML - Baca Dari String
Fungsi PHP simplexml_load_string()_ digunakan untuk membaca data XML dari sebuah string
Asumsikan kita memiliki variabel yang berisi data XML, seperti ini
$myXMLData =
"
Tove
Jani
Pengingat
Jangan lupakan aku akhir pekan ini
";
Contoh di bawah menunjukkan cara menggunakan fungsi simplexml_load_string() untuk membaca data XML dari sebuah string
Contoh
$myXMLData =
"
Tove
Jani
Pengingat
Jangan lupakan aku akhir pekan ini
";
$xml=simplexml_load_string($myXMLData) or die("Kesalahan. Tidak dapat membuat objek");
print_r($xml);
?>
Output dari kode di atas akan menjadi
Objek SimpleXMLElement ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Jangan lupakan saya akhir pekan ini. )
There is a common "trick" often proposed to convert a SimpleXML object to an array, by running it through json_encode() and then json_decode(). I'd like to explain why this is a bad idea.
Most simply, because the whole point of SimpleXML is to be easier to use and more powerful than a plain array. For instance, you can write bar->baz['bing'] ?> and it means the same thing as bar[0]->baz[0]['bing'] ?>, regardless of how many bar or baz elements there are in the XML; and if you write bar[0]->baz[0] ?> you get all the string content of that node - including CDATA sections - regardless of whether it also has child elements or attributes. You also have access to namespace information, the ability to make simple edits to the XML, and even the ability to "import" into a DOM object, for much more powerful manipulation. All of this is lost by turning the object into an array rather than reading understanding the examples on this page._
Additionally, because it is not designed for this purpose, the conversion to JSON and back will actually lose information in some situations. For instance, any elements or attributes in a namespace will simply be discarded, and any text content will be discarded if an element also has children or attributes. Sometimes, this won't matter, but if you get in the habit of converting everything to arrays, it's going to sting you eventually.
Of course, you could write a smarter conversion, which didn't have these limitations, but at that point, you are getting no value out of SimpleXML at all, and should just use the lower level XML Parser functions, or the XMLReader class, to create your structure. You still won't have the extra convenience functionality of SimpleXML, but that's your loss._