格式化时省略XML实体

时间:2015-03-25 14:38:41

标签: xml xmlstarlet xmllint

我有一个XML文件没有正确的缩进和太多空格。 这种格式


也有像LF这样的实体

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

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

2 个答案:

答案 0 :(得分:2)

为每个到达这里的人找到解决方案:

我们可以使用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

答案 1 :(得分:1)

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

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