我正在解析一个包含生物学数据的大xml文件。
xml文件的组织方式如下:
<part>
<part_id>41926</part_id>
<part_name>BBa_K1906018</part_name>
<part_short_name>K1906018</part_short_name>
<part_short_desc>Ribothermometer JB1-G3</part_short_desc>
<part_type>RBS</part_type>
<release_status>Not Released</release_status>
<sample_status>Not in stock</sample_status>
<part_results>None</part_results>
<part_nickname/>
<part_rating/>
<part_url>http://parts.igem.org/Part:BBa_K1906018</part_url>
<part_entered>2016-10-14</part_entered>
<part_author>Yuwei Han</part_author>
<deep_subparts/>
<specified_subparts/>
<specified_subscars/>
<sequences>
<seq_data>tactagagctcttattgtaaaacatgtactaaggagtactag </seq_data>
</sequences>
...
</part>
我已经开发了返回完全匹配的xpath表达式,例如
current_tree.xpath("//part/%s/text()[normalize-space(.)='%s']/../.."
"" % (arg_key, arg_values[0]))
其中arg_key将引用文档的节点之一,例如“ part_type”和arg_values [0]将引用诸如“ RBS”之类的参数值。
我正在尝试编写一个xpath表达式,该表达式将查找包含序列主题的所有seq_data节点,并返回最近的部分父节点。
我的xpath表达式可以做到这一点(不起作用)
current_tree.xpath("//seq_data/text()[contains(.,%s)]"
"/ancestor::part" % (arg_values[0]))
这将返回其seq_data节点根本不包含任何文本的所有部分,即它将获取seq_data / text()不为空的所有节点。
我不知道为什么。谢谢