PHP DomDocument输出没有<?xml version ="1.0"encoding ="UTF-8"?>

use*_*341 22 php domdocument

是否有一个选项与DomDocument删除第一行:

<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)

类实例化自动将它添加到输出中,但是可以摆脱它吗?

hrv*_*j3e 22

我认为使用DOMDocument是有效XML文件的通用解决方案:

如果你已经在变量中加载了xml:

$t_xml = new DOMDocument();
$t_xml->loadXML($xml_as_string);
$xml_out = $t_xml->saveXML($t_xml->documentElement);
Run Code Online (Sandbox Code Playgroud)

对于磁盘中的XML文件:

$t_xml = new DOMDocument();
$t_xml->load($file_path_to_xml);
$xml_out = $t_xml->saveXML($t_xml->documentElement);
Run Code Online (Sandbox Code Playgroud)

这条评论帮助:http://www.php.net/manual/en/domdocument.savexml.php#88525

  • 这是一个比公认的更好的解决方案。接受我的 +1 (3认同)

use*_*396 12

如果要输出HTML,请使用该saveHTML()功能.它自动避免了大量的XML习惯用法并正确处理已关闭/未闭合的HTML习惯用法.

如果你想输出XML,你可以使用一个事实,即DOMDocument是一个DOMNode(即:"/"在XPath表达式),因此你可以使用DOMNodeAPI调用它来遍历子节点,并调用saveXML()每个子节点上.这不会输出XML声明,它会正确输出所有其他XML内容.

例:

$xml = get_my_document_object();
foreach ($xml->childNodes as $node) {
   echo $xml->saveXML($node);
}
Run Code Online (Sandbox Code Playgroud)