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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |