Saya mencoba menambahkan beberapa data ke file XML yang ada menggunakan SimpleXML PHP. Masalahnya adalah ia menambahkan semua data dalam satu baris:
<name>blah</name><class>blah</class><area>blah</area> ...
Dan seterusnya. Semuanya dalam satu baris. Bagaimana cara memperkenalkan jeda baris?
Bagaimana cara membuatnya seperti ini?
<name>blah</name>
<class>blah</class>
<area>blah</area>
Saya menggunakan asXML()
fungsi.
Terima kasih.
php
formatting
simplexml
pengguna61734
sumber
sumber
Jawaban:
Anda dapat menggunakan kelas DOMDocument untuk memformat ulang kode Anda:
$dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($simpleXml->asXML()); echo $dom->saveXML();
sumber
Solusi Gumbo berhasil. Anda dapat melakukan pekerjaan dengan simpleXml di atas dan kemudian menambahkan ini di bagian akhir untuk menggemakan dan / atau menyimpannya dengan pemformatan.
Kode di bawah menggemakannya dan menyimpannya ke file (lihat komentar dalam kode dan hapus apa pun yang tidak Anda inginkan):
//Format XML to save indented tree rather than one line $dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($simpleXml->asXML()); //Echo XML - remove this and following line if echo not desired echo $dom->saveXML(); //Save XML to file - remove this and following line if save not desired $dom->save('fileName.xml');
sumber
Gunakan
dom_import_simplexml
untuk mengonversi ke DomElement. Kemudian gunakan kapasitasnya untuk memformat keluaran.$dom = dom_import_simplexml($simple_xml)->ownerDocument; $dom->preserveWhiteSpace = false; $dom->formatOutput = true; echo $dom->saveXML();
sumber
documentElement
seharusnyaownerDocument
. Tidak yakin apakah api berubah atau ini hanya salah ketik. Saya sudah mengoreksinya sekarang.Seperti yang dijawab Gumbo dan Witman ; memuat dan menyimpan dokumen XML dari file yang sudah ada (kami banyak pemula di sini) dengan DOMDocument :: load dan DOMDocument :: save .
<?php $xmlFile = 'filename.xml'; if( !file_exists($xmlFile) ) die('Missing file: ' . $xmlFile); else { $dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dl = @$dom->load($xmlFile); // remove error control operator (@) to print any error message generated while loading. if ( !$dl ) die('Error while parsing the document: ' . $xmlFile); echo $dom->save($xmlFile); } ?>
sumber