我正在尝试从 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 和版本。我有以下要求/意见:
- shell 脚本将在我们在工作中使用的构建程序集文件中完成,因此脚本越小越好。
- 由于它将在多个系统(通常是 RHEL5)上使用,我正在寻找可以在默认图像上本机运行的东西。
- 像这样的标签可以出现在 pom 的其他地方,所以我不能简单地为这些标签 awk。
我尝试了以下方法:
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 为您提供帮助。