我正在尝试从pom.xml中提取节点的值:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<parent>
<groupId>org.me.labs</groupId>
<artifactId>my-random-project</artifactId>
<version>1.5.0</version>
</parent>
...
</project>
我需要使用shell命令从XML中提取artifactId和版本。我有以下要求/注意事项:
我尝试了以下方法:
xpath
在我的Mac上可以使用,但默认情况下在RHEL机器上不可用。类似地,对于xmllint --xpath
,我猜它仅适用于更高版本的xmllint
,我没有也不能执行。 xmllint --pattern
似乎很有希望,但是我似乎无法从xmllint --pattern '//project/parent/version' pom.xml
(打印整个XML)或xmllint --stream --pattern '//project/parent/version' pom.xml
(无输出)中获得输出。 我意识到这是一个关于SO的常见问题,但是以上几点是为什么我不能使用这些答案。 TIA为您提供帮助。
最佳答案
--format
仅用于格式化(缩进等)文档。您可以使用--xpath
(在Ubuntu中测试,libxml v20900)完成此操作:
$ xmllint --xpath "//project/parent/version/text()" pom.xml
1.5.0