2012-04-11 9 views
7

私はlxmlを介してPythonで解析しているXMLをいくつか持っています。属性が一部のXMLに存在するかどうかをテストする方法

いくつかの要素が属性を持ち、いくつかの要素が属性を持たない状況に遭遇しています。

私は、彼らが存在する場合は、それらを抽出し、彼らがいない場合は、それらをスキップする必要がある - 私はtestfornullを展開している私は現在、(私のアプローチは間違っていると...)エラーで着陸してい

が、それはすべてのケースでは動作しません:

コード:

if root[0][a][b].attrib == '<>': 
ByteSeqReference = "NULL" 
else: 
ByteSeqReference = (attributes["Reference"]) 

XMLのA:

<ByteSequence Reference="BOFoffset"> 

のXML B:

<ByteSequence Endianness = "little-endian" Reference="BOFoffset"> 

のXML C:

<ByteSequence Endianness = "little-endian"> 

XMLのD:

<ByteSequence> 

のみA、BまたはDそれに対処することができる私の現在の方法は、Cに対応できません。

答えて

17

私は、しばしば存在しない属性のnull値のテストが動作することに驚いています。ever - 何がすべきかは、空ではなく、存在するかどうかをチェックすることです。

if 'Reference' in current_element.attrib: 
    ...do something with it... 
+0

Ahhh。それはどのように動作します。 (私もあまりにも驚いた....)。あなたのお時間をありがとう、私はそれを感謝します。それはそれを完全に修正します。 – Jay

関連する問題