Я пытаюсь добавить данные в существующий XML-файл с помощью PHP SimpleXML. Проблема в том, что он добавляет все данные в одну строку:
<name>blah</name><class>blah</class><area>blah</area> ...
И так далее. Все в одной строке. Как ввести разрыв строки?
Как мне это сделать?
<name>blah</name>
<class>blah</class>
<area>blah</area>
Я использую asXML()
функцию.
Спасибо.
php
formatting
simplexml
user61734
источник
источник
Ответы:
Вы можете использовать класс DOMDocument для переформатирования кода:
$dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($simpleXml->asXML()); echo $dom->saveXML();
источник
Решение Гамбо делает свое дело. Вы можете работать с simpleXml, указанным выше, а затем добавить его в конце, чтобы отобразить и / или сохранить его с форматированием.
Код ниже повторяет его и сохраняет в файл (см. Комментарии в коде и удалите все, что вам не нужно):
//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');
источник
Используйте
dom_import_simplexml
для преобразования в DomElement. Затем используйте его возможности для форматирования вывода.$dom = dom_import_simplexml($simple_xml)->ownerDocument; $dom->preserveWhiteSpace = false; $dom->formatOutput = true; echo $dom->saveXML();
источник
documentElement
должно бытьownerDocument
. Не уверен, изменился ли api или это просто опечатка. Я исправил это сейчас.Как ответили Гамбо и Уитман ; загрузка и сохранение XML-документа из существующего файла (мы здесь много новичков) с помощью DOMDocument :: load и 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); } ?>
источник