我有下面的XML這是我從網頁解析:的Python如果超過XML別的例外與ElementTree的
<!--
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_results>Works</part_results>
<part_nickname>SAMT</part_nickname>
<part_rating/>
<part_url>http://parts.igem.org/Part:BBa_J45001</part_url>
<part_entered>2006-06-07</part_entered>
<part_author>Kate Broadbent</part_author>
<deep_subparts/>
<specified_subparts/>
<specified_subscars/>
<sequences>...</sequences>
<features>...</features>
<parameters>
<!--...-->
<!--...-->
<parameter>...</parameter>
<parameter>
<name>swisspro</name>
<value>Q8H6N2</value>
我有一些代碼返回swisspro
參數值; Q8H6N2
。但是,如果不存在swisspro
參數,我希望代碼發出錯誤。
到目前爲止,我已經嘗試下面的代碼,但它不工作:
def part_attrib(self,x):
if x == 'uniprot_id':
for parameter in self.root.iter(tag='parameter'):
name = parameter.find('name')
if name is not None and name.text == 'swisspro':
return parameter.find('value').text
else:
return "No UniProt ID present."
隨着該else
聲明存在,該代碼總是輸出錯誤陳述是否存在目前swisspro
參數。如果我省略else
參數,則代碼有效,但如果不存在swisspro
參數,則不會引發錯誤。
我在做什麼錯?
我應該強調在XML中有幾個<paramter>
部分。
是的,那有效。非常感謝! – Charon