Вывод PHP DOMDocument без
Есть ли опция с DOMDocument для удаления первой строки:
<?xml version="1.0" encoding="UTF-8"?>
Создание экземпляра класса автоматически добавляет его в выходные данные, но можно ли от него избавиться?
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);
}
Я думаю, что использование 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
Вы можете использовать буферизацию вывода, чтобы удалить его. Немного халтурно, но это работает.
ob_start();
// dom stuff
$output = ob_get_contents();
ob_end_clean();
$clean = preg_replace("/(.+?\n)/","",$output);