首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash脚本中的属性解析XML元素

使用bash脚本中的属性解析XML元素
EN

Stack Overflow用户
提问于 2016-05-20 08:21:29
回答 1查看 829关注 0票数 0

我想在bash脚本中解析下面的xml文本。

代码语言:javascript
复制
<os name="RedHat" os_version="6">
<package_manager type="name">rpm</package_manager>
<multipath_package_check type="command">rpm -qa | grep device-mapper-multipath</multipath_package_check>
<mpath_service_enable type="command">chkconfig multipathd on</mpath_service_enable>
<mpath_service_restart type="command">service multipathd restart</mpath_service_restart>
</os>

例如,如果元素属性与参数匹配,我需要下面这样的函数来返回文本。

代码语言:javascript
复制
get_package_manager "RedHat" "6" 

应返回"rpm“

代码语言:javascript
复制
get_multipath_package_check "RedHat" "6" 

应返回"rpm -qa | grep device-mapper-multipath“

感谢任何人的帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-05-22 21:00:45

使用xml2 (apt-get install xml2)程序,对于XML的平面表示,更容易进行一些"xml解析“。

通常:

代码语言:javascript
复制
$ xml2 < test.xml | grep package_manager= | cut -d= -f2
rpm

$ xml2 < test.xml | grep multipath_package_check= | cut -d= -f2
rpm -qa | grep device-mapper-multipath

但这解决不了任何问题。对于使用xml2无法轻松解决的问题,您可以尝试使用xpath来表达查询,并使用任何可用的xpath工具,如xmllint:

代码语言:javascript
复制
$ xmllint --xpath '/os[@name="RedHat" and @os_version="6"]/package_manager/text()' test.xml
rpm

$ xmllint --xpath '/os[@name="RedHat" and @os_version="6"]/multipath_package_check[@type="command"]/text()' test.xml 
rpm -qa | grep device-mapper-multipath
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37336095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档