17

lxmlを介してpythonで解析している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 には対応できません。

4

1 に答える 1

33

存在しないことが多い属性の null 値のテストが機能することに驚いています。空かどうかではなく、存在するかどうかを確認する必要があります。

if 'Reference' in current_element.attrib:
  ...do something with it...
于 2012-04-11T23:31:43.717 に答える