Вывод формата $ SimpleXML-> asXML ();

Возможный дубликат:
PHP simpleXML как сохранить файл в отформатированном виде?

Редактировать Да, это дубликат. Проголосовал за закрытие. – Эли

Всем привет,

Название в значительной степени говорит все.

Если у меня есть что-то вроде (из примеров сайта php):

$xmlstr = <<<XML <?xml version='1.0' standalone='yes'?> <movies></movies> XML; $sxe = new SimpleXMLElement($xmlstr); $sxe->addAttribute('type', 'documentary'); $movie = $sxe->addChild('movie'); $movie->addChild('title', 'PHP2: More Parser Stories'); $movie->addChild('plot', 'This is all about the people who make it work.'); $characters = $movie->addChild('characters'); $character = $characters->addChild('character'); $character->addChild('name', 'Mr. Parser'); $character->addChild('actor', 'John Doe'); $rating = $movie->addChild('rating', '5'); $rating->addAttribute('type', 'stars'); echo("<pre>".htmlspecialchars($sxe->asXML())."</pre>"); die(); 

Я заканчиваю вывод длинной строки следующим образом:

 <?xml version="1.0" standalone="yes"?> <movies type="documentary"><movie><title>PHP2: More Parser Stories</title><plot>This is all about the people who make it work.</plot><characters><character><name>Mr. Parser</name><actor>John Doe</actor></character></characters><rating type="stars">5</rating></movie></movies> 

Это нормально для потребителя программы, но для отладки / человеческих задач, кто-нибудь знает, как получить это в хороший с отступом формат?

Solutions Collecting From Web of "Вывод формата $ SimpleXML-> asXML ();"

В комментариях на странице руководства PHP для SimpleXMLElement есть множество решений. Не очень эффективный, но, безусловно, краткий, это решение от анонимного

 $dom = dom_import_simplexml($simpleXml)->ownerDocument; $dom->formatOutput = true; echo $dom->saveXML(); 

Комментарии к странице руководства PHP часто являются хорошими источниками общих потребностей, если вы сначала отфильтровываете явно неправильные вещи.

Выше не работало для меня, я нашел, что это сработало:

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

Нашел аналогичное решение … для форматирования необработанных данных xlm … из моих запросов php SOAP __getLastRequest & __getLastResponse , для быстрой отладки xml я объединил его с google-code-prettify .

Это хорошее решение, если вы хотите отформатировать чувствительные XML-данные и не хотите делать это онлайн.

Пример кода ниже, может быть полезен другим:

 $dom = new DOMDocument; $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($data); //=====$data has the raw xml data...you want to format echo '<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>'; echo "<br/> <pre class=\"prettyprint\" >". htmlentities($dom->saveXML())."</pre>"; 

Ниже приведен образец форматированного XML-вывода, который я получил:

Примечание. $dom->saveXML() XML доступен в $dom->saveXML() и может быть непосредственно сохранен в XML-файле, используя запись в php-файле.

Форматированный вывод XML