如何在xml文件中更改标签的格式?

时间:2018-03-20 17:41:59

标签: xml bash xmlstarlet

在xml文件中,如何更改格式为 annotation 标记的所有内容:

<manifest>
<project name="something" path="something" revision="some sha"><annotation version="1.2.3" /></project>
</manifest>

为:

<manifest>
<project name="something" path="something" revision="some sha"><annotation name="version" value="1.2.3" /></project>
</manifest>

我无法找出使用xmlstarlet

执行此操作的选项

2 个答案:

答案 0 :(得分:3)

xmlstarlet edit --omit-decl \
  --insert '//manifest/project/annotation' --type 'attr' -n 'name' --value version \
  --rename '//manifest/project/annotation/@version' -v 'value' file.xml

输出:

<manifest>
  <project name="something" path="something" revision="some sha">
    <annotation value="1.2.3" name="version"/>
  </project>
</manifest>

答案 1 :(得分:1)

以下命令应该完成这项工作:

xmlstarlet ed --append //annotation -t attr -n name -v version \
              -r //annotation/@version -v value file.xml

属性的顺序不同,但在XML中这并不重要。