XML-форматирование — простой XML не делает красивое форматирование (форматирование отступа)
Вы заметите, что он больше не форматируется желаемым способом.
Я следовал всем примерам онлайн-учебников, которые сочетают простой XML с DOM, но ни один из них не отформатирован правильно.
Я попробовал многие из решений на форуме, но, похоже, не работает для меня.
Тем не менее, я только что нашел это решение — оно действительно работает — однако, его давно затянуто. мне необходимо сначала сохранить файл с помощью simpleXML, а затем перезагрузить сохраненный файл и СЕЙЧАС сохранить его с помощью DocumentDom:
$sxe->asXML('simple_xml_create.xml'); $simplexml = simplexml_load_file("simple_xml_create.xml"); $dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($simplexml->asXML()); $xml = new SimpleXMLElement($dom->saveXML()); $xml->saveXML("simple_xml_create.xml");
ЕСТЬ ЛИ БОЛЬШЕЕ ЭЛЕГАНТНОЕ РЕШЕНИЕ?
Решение
Прежде всего, вам удалось выяснить, что DOMDocument поддерживает форматированный XML, а SimpleXMLElement не. И это совершенно правильно.
Так как вы хотите использовать SimpleXMLElement на самом деле создать документ XML, но вы также хотите извлечь выгоду из вариантов форматирования из DOMDocument Возможно, вы захотите узнать о том, что обе библиотеки являются сестринскими библиотеками, которые очень хорошо работают друг с другом. Вы, кажется, уже знаете об этом, когда используете simplexml_import_dom преобразовать DOMNode возразить в это SimpleXMLElement объект.
Однако вы, похоже, скучаете по тому, как близко вы уже были Пожалуйста, посмотрите следующий пример, который я скопировал из вашего вопроса — я просто добавил одну строку в самом конце (и изменил имя файла на стандартный вывод, чтобы он отображал документы):
$dom = new domDocument; $dom->formatOutput = true; $root = $dom->appendChild($dom->createElement( "user" )); $sxe = simplexml_import_dom( $dom ); $sxe->addChild("firstname", "John"); $sxe->addChild("surname", "Brady"); $sxe->asXML('php://output'); $dom->save('php://output');
SimpleXMLElement::saveXML() метод будет использовать неформатированный вывод, в то время как DOMDocument::save() Метод будет использовать форматирование, так как вы устанавливаете параметры для:
ФОРМАТИРОВАНИЕ XML PHP
XML является одним из стандартных форматов обмена данными. Он используется для передачи и хранения структурированных данных. Кроме того, PHP обладает мощными средствами для работы с XML-документами. Одной из таких возможностей является форматирование XML-кода.Для форматирования XML-кода в PHP можно использовать функцию `simplexml_load_string()`. Для этого в качестве аргумента функции нужно передать строку, содержащую XML-код. Пример: $xml = ‘ Text ‘;
$doc = simplexml_load_string($xml);
echo $doc->asXML(); В результате выполнения этого кода будет выведено:
$doc = new DOMDocument();
$doc->loadXML($xml);
$doc->formatOutput = true;
echo $doc->saveXML(); Результат выполнения этого кода будет таким же, как и в предыдущем примере.Таким образом, форматирование XML-кода в PHP является довольно простой задачей и может быть выполнено с помощью нескольких функций языка.
HTML Form To XML — Using PHP
Database to XML in PHP — Get Data from Database in XML Format — PHP Tutorial 2020 —Player Of Code
#8.2 Эксперт PHP: Дополнительные уроки. Экспорт в XML №1
Основы работы с XML в PHP
How to Parse XML in PHP [Read blog feeds, generate xml sitemap, find xml tags]
Написание парсера на PHP и Curl (phpQuery). Сохранение результата в XML файле
Как быстро открыть документ xml c Росрееста в читабельном виде