Cara menggunakan php object to xml

The W3C DOM dipisahkan menjadi bagian yang berbeda (Core, XML, dan HTML) dan tingkat yang berbeda (DOM Level 1/2/3):

  •   Inti DOM – mendefinisikan satu set standar objek untuk dokumen terstruktur
  • XML DOM – mendefinisikan satu set standar objek untuk dokumen XML
  • HTML DOM – mendefinisikan satu set standar objek untuk dokumen HTML

Jika Anda ingin mempelajari lebih lanjut tentang DOM XML, silakan kunjungi XML DOM tutorial kami.

XML Parsing
Untuk membaca dan memperbarui – membuat dan memanipulasi – sebuah dokumen XML, Anda akan memerlukan sebuah parser XML.

Ada dua tipe dasar parser XML:

Parser Pohon berbasis: parser ini mengubah dokumen XML menjadi struktur pohon. Ini menganalisis seluruh dokumen, dan menyediakan akses ke elemen pohon
-Acara berbasis parser: Tampilan dokumen XML sebagai rangkaian acara. Ketika peristiwa tertentu terjadi, dia akan memanggil fungsi untuk menanganinya
DOM parser adalah parser berbasis pohon.

Lihatlah fraksi dokumen XML berikut:

<?xml version=”1.0″ encoding=”UTF-8″?>
<from>Jani</from>

The XML DOM melihat XML di atas sebagai struktur pohon:

  • Level 1: XML Document
  • Level 2: Root element: <from>
  • Level 3: Text element: “Jani”

instalasi
The DOM XML fungsi parser adalah bagian dari inti PHP. Tidak ada yang diperlukan untuk menggunakan fungsi-fungsi ini instalasi.

XML file
The XML file di bawah ini akan digunakan dalam contoh kita:

<?xml version=”1.0″ encoding=”UTF-8″?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don’t forget me this weekend!</body>
</note>

Beban dan Output XML
Kami ingin menginisialisasi parser XML, beban xml, dan output

Contoh :

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load(“note.xml”);

print $xmlDoc->saveXML();
?>

Output dari kode di atas akan menjadi:

Tove Jani Reminder Don’t forget me this weekend!

Jika Anda memilih “Lihat sumber” di jendela browser, Anda akan melihat HTML berikut:

<?xml version=”1.0″ encoding=”UTF-8″?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don’t forget me this weekend!</body>
</note>

Contoh di atas membuat DOMDocument-Obyek dan beban XML dari “note.xml” ke dalamnya.

Kemudian saveXML () fungsi menempatkan dokumen XML internal menjadi string, sehingga kita bisa output itu.

Perulangan melalui XML
Kami ingin menginisialisasi parser XML, memuat XML, dan loop melalui semua elemen dari elemen <note>:

Contoh :

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load(“note.xml”);

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
  {
  print $item->nodeName . ” = ” . $item->nodeValue . “<br>”;
  }
?>

Output dari kode di atas akan menjadi:

#text = 
to = Tove
#text = 
from = Jani
#text = 
heading = Reminder
#text = 
body = Don’t forget me this weekend!
#text =

Dalam contoh di atas Anda melihat bahwa ada node teks kosong antara masing-masing elemen.

Ketika XML menghasilkan, sering mengandung putih-ruang antara node. The parser XML DOM memperlakukan unsur-unsur sebagai biasa, dan jika Anda tidak menyadari dari mereka, mereka kadang-kadang menyebabkan masalah.

Di dalam PHP, tersedia function untuk melakukan parsing data XML yang berasal dari situs tertentu dengan mudah . Function tersebut adalah simplexml_load_file(). Penggunaan dari function ini cukup mudah yaitu tinggal tuliskan saja target URL nya di dalam parameter function tersebut.

Namun, terkadang di balik kemudahan penggunaan function simplexml_load_file() muncul juga masalah yaitu adanya Error OpenSSL ketika proses parsingnya. Bagaimana cara mengatasinya? artikel ini akan membahasnya secara jelas.

Seperti yang telah dijelaskan sebelumnya bahwa penggunaan function simplexml_load_file() untuk proses parsing xml dari situs tertentu cukup mudah. Sebagai contoh misalnya diberikan script berikut ini yang mencoba memparsing data XML dari situs w3schools.com:

<?php
$dataXML = simplexml_load_file("https://www.w3schools.com/xml/note.xml");
print_r($dataXML);
?>

Output hasil parsing script di atas adalah

SimpleXMLElement Object
(
    [to] => Tove
    [from] => Jani
    [heading] => Reminder
    [body] => Don't forget me this weekend!
)

Namun, terkadang proses parsing XML dengan function simplexml_load_file() seperti di atas tidak berjalan alias terdapat error, yaitu:

Warning: simplexml_load_file() [function.simplexml-load-file]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in …

Biasanya error di atas muncul ketika menggunakan PHP versi lama dan situs yang menjadi target menggunakan protokol https://. Kemungkinan besar error tersebut disebabkan adanya permasalahan pada konfigurasi certificate SSL yang ada di PHP nya.

Lantas, bagaimana solusinya? Solusinya adalah dengan menggunakan CURL terlebih dahulu untuk membaca data XML. Data XML yang dibaca dengan CURL ini masih dalam format string. Selanjutnya string XML tersebut barulah diparsing menggunakan simplexml_load_string();

Mengapa menggunakan CURL untuk membaca data XML nya? Ya.. karena di dalam CURL kita bisa mensetting supaya tidak ada proses verifikasi SSL nya yang menjadi sebab munculnya error di atas.

Berdasarkan ide di atas, perhatikan contoh implementasinya berikut ini!

<?php
// target url data xml nya
$url = "https://...";
// setting curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// menonaktifkan proses verifikasi SSL
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// baca data xml dalam bentuk string
$xmlresponse = curl_exec($ch);
// proses parsing xml
$xml=simplexml_load_string($xmlresponse);
// menampilkan struktur hasil parsing
print_r($xml);
?>

Berdasarkan pengalaman pribadi, teknik di atas cukup ampuh sebagai alternatif cara dari proses parsing xml dengan simplexml_load_file(), dan… alhamdulillaah terbukti sukses.

Semoga tip/trik ini dapat membawa manfaat bagi yang mengalami masalah serupa seperti yang telah dijelaskan di atas.