Выход PHP DomDocument без <? Xml version = "1.0" encoding = "UTF-8"?>

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

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

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

Ответы

Ответ 1

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

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

Пример:

$xml = get_my_document_object();
foreach ($xml->childNodes as $node) {
   echo $xml->saveXML($node);
}

Ответ 2

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

Если у вас xml allready загружен в переменную:

$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

Ответ 3

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

ob_start();

// dom stuff

$output = ob_get_contents();
ob_end_clean();

$clean = preg_replace("/(.+?\n)/","",$output);