如何更改 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 命令应该可以完成这项工作:
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>
在 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 命令应该可以完成这项工作:
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>