如何告诉 xmllint 不要改变到

如何告诉 xmllint 不要改变到

我承认这是标准的转换方式<tag></tag><tag/>但客户希望采用前一种布局,而不是后一种。我查看了各种选项,xmllint但不知道需要什么。

或者,除此之外还有什么其他东西xmllint可以使用吗?

答案1

xmllint有可用于生成所需输出的选项。来自帮助:

--c14n : save in W3C canonical format v1.0 (with comments)   
--c14n11 : save in W3C canonical format v1.1 (with comments)
--exc-c14n : save in W3C exclusive canonical format (with comments)

使用其中任何一个都可以

xmllint --c14n test.xml

不幸的是,在一次调用中组合多个格式化选项xmllint似乎不起作用,因此如果您还想使用--format重新xmllint格式化/重新缩进输出,则需要将第一次xmllint调用的输出通过管道传输到第二次调用。执行此操作时,似乎xmllint需要将-stdin 重定向到命令的末尾。

例子:

对于test.xml作为

<?xml version="1.0" encoding="UTF-8"?>
<outer><inner/></outer>

命令

xmllint --format test.xml | xmllint --c14n -

产生输出

<outer>
  <inner></inner>
</outer>

笔记:

  • 由于该--format选项将再次折叠展开的空标签,因此管道中选项的顺序很重要
  • 上述选项删除xml 声明/ 在输出的第一行省略它

相关内容