PHP DomDocument 输出不带<?xml 版本=“1.0” 编码=“UTF-8”?>

2022-08-30 13:41:06

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

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

类实例化会自动将其添加到输出中,但是否可以删除它?


答案 1

我认为使用 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


答案 2

如果要输出 HTML,请使用该函数。它会自动避免大量的XML习语,并正确处理封闭/未关闭的HTML习语。saveHTML()

如果要输出 XML,则可以使用事实是 (即 XPath 表达式中的 “/”),因此可以使用 API 调用来循环访问子节点并调用每个子节点。这不会输出 XML 声明,并且会正确输出所有其他 XML 内容。DOMDocumentDOMNodeDOMNodesaveXML()

例:

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

推荐