【发布时间】:2017-03-28 23:43:07
【问题描述】:
我正在将一个符合 XML 的 PHP 文件加载到 DOMDocument 中。
$domDoc = new DOMDocument();
$domDoc->recover = TRUE;
$domDoc->preserveWhiteSpace = TRUE;
$domDoc->formatOutput = FALSE;
$domDoc->substituteEntities = FALSE;
$domDoc->resolveExternals = FALSE;
尽管保留了空格并指示它不格式化输出,但当我使用$domDoc->saveXML() 保存 XML 时,我仍然发现 <?php ?> 块中的前导空格被删除。
输入:
<?xml version="1.0" encoding="UTF-8"?>
<html>
<?php
// This is code.
// Something else.
echo 'test';
?>
</html>
输出:
<?xml version="1.0" encoding="UTF-8"?>
<html>
<?php // This is code.
// Something else.
echo 'test';
?>
</html>
我希望输出与输入尽可能相同。在属性之间折叠空格是可以接受的,但是在节点之间或在处理指令内折叠空格是不行的。为什么 PHP::DOMDocument() / libxml2 会改变 PI 的内容?我是否需要借助手动 DOM 回显来保持空白完全保留?
【问题讨论】:
-
嗨 Jimp,据我所知,它不是被删除的空格,而是换行符。您的文件中可能有两种类型的换行符(例如:“\n”与“\n\r”)。为什么不通过删除所有新行并在文本编辑器中重新应用它们并再次运行代码来编辑文件。
-
感谢您的建议,但我已经尝试过了,没有任何区别。不幸的是,保罗在下面的回答是正确的。
标签: php domdocument libxml2