Вывод PHP DOMDocument без


Есть ли опция с DOMDocument для удаления первой строки:

<?xml version="1.0" encoding="UTF-8"?>

Создание экземпляра класса автоматически добавляет его в выходные данные, но можно ли от него избавиться?

Author: user398341, 2011-04-18

3 answers

Если вы хотите вывести HTML, используйте функцию saveHTML(). Он автоматически избегает множества XML-идиом и правильно обрабатывает закрытые/открытые HTML-идиомы.

Если вы хотите вывести XML, вы можете использовать тот факт, что DOMDocument является DOMNode (а именно: '/' в выражении XPath), таким образом, вы можете использовать вызовы API DOMNode для итерации по дочерним узлам и вызова saveXML() на каждом дочернем узле. Это не выводит объявление XML, а выводит все остальное содержимое XML должным образом.

Пример:

$xml = get_my_document_object();
foreach ($xml->childNodes as $node) {
   echo $xml->saveXML($node);
}
 10
Author: user268396, 2011-04-18 17:00:44

Я думаю, что использование DOMDocument является универсальным решением для допустимых XML-файлов:

Если у вас уже есть xml, загруженный в переменную:

$t_xml = new DOMDocument();
$t_xml->loadXML($xml_as_string);
$xml_out = $t_xml->saveXML($t_xml->documentElement);

Для XML-файла с диска:

$t_xml = new DOMDocument();
$t_xml->load($file_path_to_xml);
$xml_out = $t_xml->saveXML($t_xml->documentElement);

Этот комментарий помог: http://www.php.net/manual/en/domdocument.savexml.php#88525

 19
Author: hrvoj3e, 2013-06-28 10:25:08

Вы можете использовать буферизацию вывода, чтобы удалить его. Немного халтурно, но это работает.

ob_start();

// dom stuff

$output = ob_get_contents();
ob_end_clean();

$clean = preg_replace("/(.+?\n)/","",$output);
 0
Author: Byron Whitlock, 2011-04-18 17:05:07