格式化时省略 XML 个实体

Omit XML entities when formating

我有一个 XML 文件,没有正确的缩进和太多空格。 还有像 LF 这种格式的实体 


我想格式化并重新缩进文件以提高可读性。 我尝试过使用 xmllint 和 xmlstarlet,但它们都将这些实体替换为其 ASCII 字符,因此它们不再出现在格式化文档中。

如何在不考虑这些实体的情况下格式化我的 XML?

简短回答:你不能,至少不能使用依赖于 XML 解析器的工具。

&#...; 构造不是 "entities",它们是(数字或十六进制)字符引用。符合规范的 XML 解析器会自动将所有字符引用转换为其对应的字符,并且您无法关闭这种行为 - 从 XML 解析器接收字符的应用程序绝对无法知道给定字符是原始来源中的文字还是字符引用。

找到解决办法,给到这里的大家:

我们可以使用 tidy 实用程序。在 linux 中只是:

sudo apt-get install tidy
tidy -o output.xml --preserve-entities yes -xml input.xml

也许有些选项不应该存在。只需玩转选项即可满足您的要求。 请在此处查看完整文档: http://tidy.sourceforge.net/docs/tidy_man.html

最重要的是--preserve-entities yes