使用 XMLint 的空 XML 标签格式无效
Invalid formating for empty XML tags using XMLint
我有一份 XML 未格式化的文档,例如:
<foo>
<bar>
<hop>
<hey>
</hey>
</hop>
</bar>
</foo>
如您所见,标签 "hey" 是空的。我记得在这种情况下,它应该写成<hey/>
,但这不是我可以改变的。
要格式化此文档,我使用 xmllint --format
命令。但不是输出
<foo>
<bar>
<hop>
<hey>
</hey>
</hop>
</bar>
</foo>
或
<foo>
<bar>
<hop>
<hey></hey>
</hop>
</bar>
</foo>
它输出
<foo>
<bar>
<hop>
<hey>
</hey>
</hop>
</bar>
</foo>
这不是我想要的。我试图编写一个 sed 命令以便在 xmllint 工作后缩进这些特定的标签,但我无法阻止 sed 加载整个(巨大的)xml 文件,这花了几分钟,比 xmllint.
更喜欢
解决方案是找到一个选项让 xmllint 正确格式化这些标签,但我在 man 中找不到。你知道什么可以帮助我吗?
hey
元素不为空,它包含一个值为换行符的文本节点。重新格式化 XML 的进程通常会遵守这一点,并保持元素的值不变。
我有一份 XML 未格式化的文档,例如:
<foo>
<bar>
<hop>
<hey>
</hey>
</hop>
</bar>
</foo>
如您所见,标签 "hey" 是空的。我记得在这种情况下,它应该写成<hey/>
,但这不是我可以改变的。
要格式化此文档,我使用 xmllint --format
命令。但不是输出
<foo>
<bar>
<hop>
<hey>
</hey>
</hop>
</bar>
</foo>
或
<foo>
<bar>
<hop>
<hey></hey>
</hop>
</bar>
</foo>
它输出
<foo>
<bar>
<hop>
<hey>
</hey>
</hop>
</bar>
</foo>
这不是我想要的。我试图编写一个 sed 命令以便在 xmllint 工作后缩进这些特定的标签,但我无法阻止 sed 加载整个(巨大的)xml 文件,这花了几分钟,比 xmllint.
更喜欢解决方案是找到一个选项让 xmllint 正确格式化这些标签,但我在 man 中找不到。你知道什么可以帮助我吗?
hey
元素不为空,它包含一个值为换行符的文本节点。重新格式化 XML 的进程通常会遵守这一点,并保持元素的值不变。