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

我很惊讶对一个通常不存在的属性的空值进行测试——你应该做的是检查它是否存在,而不是它是否为空:

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