加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

xmlstarlet选择具有特定属性值的节点

发布时间:2020-12-15 21:01:18 所属栏目:安全 来源:网络整理
导读:我是所有这一切的新手所以请原谅我,如果答案是完全明显的!我有一个从NCBI下载的 XML文档,我试图从每个条目中提取主机信息,这看起来像这样(但更深层次嵌套): OrgName_mod OrgMod OrgMod_subtype value="strain"2/OrgMod_subtype OrgMod_subnameMvs/Jiroft.I
我是所有这一切的新手所以请原谅我,如果答案是完全明显的!我有一个从NCBI下载的 XML文档,我试图从每个条目中提取主机信息,这看起来像这样(但更深层次嵌套):

<OrgName_mod>
    <OrgMod>
        <OrgMod_subtype value="strain">2</OrgMod_subtype>
        <OrgMod_subname>Mvs/Jiroft.IRN/14.15/1[B3]</OrgMod_subname>
    </OrgMod>
    <OrgMod>
        <OrgMod_subtype value="nat-host">21</OrgMod_subtype>
        <OrgMod_subname>Homo sapiens</OrgMod_subname>
    </OrgMod>
</OrgName_mod>

我使用以下方法取得了成功:

xml sel -t -v //OrgName_mod/OrgMod[2]/OrgMod_subname -n file.xml

但问题是OrgMod节点中有时会有更多或更少的信息,而主机并不总是处于第二位置.所以我尝试了几乎每个版本都尝试选择主机节点:

xml sel -t -m //OrgMod/OrgMod_subtype[@value=nat-host] -v ../OrgMod_subname -n file.xml

我想选择带有nat-host属性的OrgMod_subtype节点,然后打印带有种类名称的兄弟(?)OrgMod_subname节点.

任何帮助将不胜感激!

解决方法

试试这种方式:

//OrgMod[OrgMod_subtype/@value = 'nat-host']/OrgMod_subname/text()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读