本机shell命令设置为从XML中提取节点值
我试图从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和version。我有以下要求/意见: > shell脚本将在我们在工作中使用的构建程序集文件中完成,所以脚本越小越好。 我已经尝试过以下内容: > xpath在我的Mac上工作,但默认情况下在RHEL机器上不可用。同样,对于xmllint –xpath,我猜这只是在以后的版本的xmllint中可用的,我没有,不能执行。 我意识到这是SO上的一个常见问题,但上面的几点是为什么我不能使用这些答案。 TIA为您的帮助。
我已经设法使用xmllint –shell来暂时解决这个非常不合脚本的脚本。
echo "cat //project/parent/version" | xmllint --shell pom.xml | sed '/^/ >/d' | sed 's/<[^>]*.//g' 如果XML节点具有像我的pom.xml这样的命名空间属性,事情变得更重,基本上按照名称提取节点: echo "cat //*[local-name()='project']/*[local-name()='parent']/*[local-name()='version']" | xmllint --shell pom.xml | sed '/^/ >/d' | sed 's/<[^>]*.//g' 希望它有帮助。如果有人可以简单地表达这些表达,我将不胜感激。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |