xmlstarlet选择具有特定属性值的节点
我对这一切都是陌生的,所以如果答案是显而易见的,请原谅我!我有一个从NCBI下载的XML文档,我正试图从每个条目中提取主机信息,看起来有点像这样(但嵌套得更深): 但问题是,有时OrgMod节点中的信息或多或少,而主机并不总是位于第二个位置。因此,我已经尝试了此应用程序的每个版本,以尝试选择特定的主机节点:xmlstarlet选择具有特定属性值的节点,xml,bash,xpath,attributes,xmlstarlet,Xml,Bash,Xpath,Attributes,Xmlstarlet,我对这一切都是陌生的,所以如果答案是显而易见的,请原谅我!我有一个从NCBI下载的XML文档,我正试图从每个条目中提取主机信息,看起来有点像这样(但嵌套得更深): 但问题是,有时OrgMod节点中的信息或多或少,而主机并不总是位于第二个位置。因此,我已经尝试了此应用程序的每个版本,以尝试选择特定的主机节点: xml sel -t -m //OrgMod/OrgMod_subtype[@value=nat-host] -v ../OrgMod_subname -n file.xml 我想选择具有
xml sel -t -m //OrgMod/OrgMod_subtype[@value=nat-host] -v ../OrgMod_subname -n file.xml
我想选择具有nat host属性的OrgMod_子类型节点,然后用物种名称打印同级(?)OrgMod_子名称节点
任何帮助都将不胜感激 试着这样做:
//OrgMod[OrgMod_subtype/@value = 'nat-host']/OrgMod_subname/text()
据我所见,唯一能将兄弟姐妹称为“兄弟姐妹”的方法是去找父母。例如,我测试时出现以下错误:
$ xmlstarlet sel -t -m "//OrgMod/[OrgMod_subtype/@value='nat-host']/OrgMod_subname/text()" file.xml
Invalid expression: //OrgMod/[OrgMod_subtype/@value='nat-host']/OrgMod_subname/text()
compilation error: element for-each
xsl:for-each : could not compile select expression '//OrgMod/[OrgMod_subtype/@value='nat-host']/OrgMod_subname/text()'
因此,我即兴创作了。/,这部作品:
$ xmlstarlet sel -t -m "//OrgMod/OrgMod_subtype[@value='nat-host']" -v "../OrgMod_subname/text()" file.xml
Homo sapiens~
$
我的xmlstarlet版本是:
$ xmlstarlet --version
1.6.1
compiled against libxml2 2.9.1, linked with 20904
compiled against libxslt 1.1.28, linked with 10129
$
-bash:意外标记“”附近出现语法错误('我在尝试使用[last()]时也遇到此错误-我缺少什么吗?我使用的是OXgen。它工作正常。此表达式返回:智人。请尝试将xpath括在引号中:
xml sel-t-m//OrgMod[OrgMod_subtype/@value='nat host']/OrgMod_subname/text()-n file.xml'
我想出来了。TextEdit“聪明地修正”了我的引号,bash不喜欢。谢谢!
$ xmlstarlet sel -t -m "//OrgMod/OrgMod_subtype[@value='nat-host']" -v "../OrgMod_subname/text()" file.xml
Homo sapiens~
$
$ xmlstarlet --version
1.6.1
compiled against libxml2 2.9.1, linked with 20904
compiled against libxslt 1.1.28, linked with 10129
$