Выход 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);