在Python中使用ElementT解析XML节点值

2024-09-30 16:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我从网页上解析了以下XML:

<!--
Parts from the iGEM Registry of Standard Biological Parts
-->
<rsbpml>
 <part_list>
  <part>
   <part_id>151</part_id>
   <part_name>BBa_B0034</part_name>
   <part_short_name>B0034</part_short_name>
   <part_short_desc>RBS (Elowitz 1999) -- defines RBS efficiency</part_short_desc>
   <part_type>RBS</part_type>
   <release_status>Released HQ 2013</release_status>
   <sample_status>In stock</sample_status>

我想提取一些值。在

例如,我想从<part_type>输出值RBS。在

我试过以下方法:

^{pr2}$

但它不起作用,我得到:AttributeError:'NoneType' object has no attribute 'text'

我做错什么了?在


Tags: samplenamefromid网页releasetypestatus
1条回答
网友
1楼 · 发布于 2024-09-30 16:23:07

试着换衣服

for part in self.root.findall('part_list'):

^{2}$

findall返回匹配的所有节点的列表。因此,第一行返回所有part_list节点的列表。您的<part_list>节点没有任何带有标记part_type的子节点,因此它返回None,您将得到您的错误。在

如果只有一个节点part_list,那么find将返回实际的节点,您可以使用普通的for part in语法来遍历它的所有子节点。在

如果有多个part_list标记,则只需要一个嵌套的for循环:

for part_list in self.root.findall('part_list'):
    for part in part_list: 
         etc.

编辑:假设这是一个XY问题-如果您要查找的是一个特定的子路径,您可以同时执行所有操作,如下所示:

all_parts = self.root.findall('part_list/part')
print all_parts[0].find('part_type').tag

等等

相关问题 更多 >