Shell (bash) 解析xml maven pom
·
工具:
centos 7 中已经带有xmllint不需要安装。
解析普通类型
解析 text1.xml 文件
<paraent>
<item name="1">
<key>username</key>
<value>1111</value>
</item>
<item name="2">
<key>username</key>
<value>777</value>
</item>
<item name="3">
<key>username</key>
<value>444</value>
</item>
</paraent>
获取 paraent下name为3的item中的value的值可以使用
xmllint --xpath '//item[@name=2]/value/text()' text1.xml
默认情况下xmllint 以xml文件中的根节点作为入口,上面的示例中也就是
paraent
得到
777
解析 pom.xml
需要解析pom.xml 如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>edu.hznu.crypto</groupId>
<artifactId>alg-sm2-demo</artifactId>
<version>1.0-0</version>
...
</project>
由于pom.xml 文件的project属性中存在xmlns命名空间问题,无法直接通过上面的表达式解析
需要通过手动指定空间位置的方式进行一层一层的寻找
比如说现在需要获取这个maven项目的版本号,也就是project > version
xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' pom.xml
/*[local-name()="xxxx"]中的xxx也就是指定节点位置
致谢
[1]. Mythsman . 2017.10.15 . https://blog.mythsman.com/post/5d2b5ebf25601931a5f8d885/?tdsourcetag=s_pctim_aiomsg
[2]. Stackoverflow . Jeff Mercado . https://stackoverflow.com/questions/41114695/get-pom-xml-version-with-xmllint
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)