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

How to change the format of a tag in xml file?

在 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

执行此操作的选项

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

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

属性的顺序不同,但在XML中这无关紧要。

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>