Скрыть объявление XML в файлах, сгенерированных с помощью PHP

Я был tesing с простым примером того, как отображать XML в браузере с помощью PHP и нашел этот пример, который работает хорошо

<?php $xml = new DOMDocument("1.0"); $root = $xml->createElement("data"); $xml->appendChild($root); $id = $xml->createElement("id"); $idText = $xml->createTextNode('1'); $id->appendChild($idText); $title = $xml->createElement("title"); $titleText = $xml->createTextNode('Valid'); $title->appendChild($titleText); $book = $xml->createElement("book"); $book->appendChild($id); $book->appendChild($title); $root->appendChild($book); $xml->formatOutput = true; echo "<xmp>". $xml->saveXML() ."</xmp>"; $xml->save("mybooks.xml") or die("Error"); ?> 

Он производит следующий вывод:

 <?xml version="1.0"?> <data> <book> <id>1</id> <title>Valid</title> </book> </data> 

Теперь у меня есть два вопроса относительно того, как должен выглядеть вывод.

  1. Первая строка в xml-файле '' не должна отображаться, то есть должна быть скрыта

  2. Как я могу отобразить TextNode в следующей строке. В целом я делаю вывод таким образом

     <data> <book> <id>1</id> <title> Valid </title> </book> </data> 

Возможно ли получить желаемый результат, если да, то как я могу это сделать.

благодаря

Чтобы пропустить объявление XML, вы можете использовать результат saveXML в корневом узле:

 $xml_content = $xml->saveXML($root); file_put_contents("mybooks.xml", $xml_content) or die("cannot save XML"); 

Обратите внимание, что saveXML(node) имеет отличный результат от saveXML() .

Первый вопрос: вот мой пост, где перечислены все полезные темы с ответами: как вы исключаете пролог XML из вывода?

Второй вопрос: я не знаю никакой PHP-функции, которая выводит такие текстовые узлы.

Ты мог:

  • прочитайте xml с помощью DomDocument и сохраните каждый узел в виде строки
  • итерации корытных узлов
  • обнаруживать текстовые узлы и добавлять новые строки в строку xml вручную

В конце вы должны иметь тот же XML с текстовыми значениями узлов в новой строке:

 <node> some text data </node>