Intereting Posts
как использовать, если условия для данных после запроса в php Как скопировать таблицу из одной базы данных mysql в другую базу данных mysql PHP – расширение метода, например, расширение класса Доступ к данным с использованием отношений Laravel Ошибка WordPress при разработке плагина – «У вас недостаточно прав для доступа к этой странице». Почему я получаю «Идентификатор ресурса №4» при применении print_r () к массиву в PHP? Форма редактирования cann't получить следующие данные для одного и того же пользователя Symfony 2: класс не найден в контроллере mysql select и где над несколькими таблицами (очень сложно) Веб-приложение – слайдер, показывающий функции дней месяца Как включить SOAP на CentOS Обрезка блока текста до ближайшего слова, когда достигается определенный предел символов? shell whoami не равен php shell_exec whoami? PHP preg_split игнорирует escape-последовательность Частный метод переопределения и видимости

PHP simpleXML как сохранить файл в отформатированном виде?

Я пытаюсь добавить некоторые данные в существующий файл XML с помощью SimpleXML PHP. Проблема заключается в том, что он добавляет все данные в одну строку:

<name>blah</name><class>blah</class><area>blah</area> ... 

И так далее. Все в одной строке. Как ввести разрывы строк?

Как мне это сделать?

 <name>blah</name> <class>blah</class> <area>blah</area> 

Я использую asXML() .

Благодарю.

Вы можете использовать класс DOMDocument для переформатирования кода:

 $dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($simpleXml->asXML()); echo $dom->saveXML(); 

Решение Gumbo делает трюк. Вы можете работать с simpleXml выше, а затем добавить это в конец, чтобы эхо и / или сохранить его с форматированием.

Код ниже echos и сохраняет его в файл (см. Комментарии в коде и удалите все, что вы не хотите):

 //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(); 

Как ответил Гумбо и Витман ; загрузка и сохранение 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); } ?>