使用XMLint

时间:2018-03-08 13:20:04

标签: xml linux xmllint

我有一个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正确格式化这些标签的选项,但是我找不到它。你知道什么可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

hey元素不为空,它包含一个文本节点,其值为换行符。重新格式化XML的进程通常会尊重该进程,并保持元素的值不变。