如何测试某个XML中是否存在属性

时间:2012-04-11 23:29:30

标签: python xml lxml

我有一些XML,我通过lxml在python中解析。

我遇到的情况是某些元素具有属性而某些元素没有属性。

如果它们存在,我需要提取它们,但如果它们不存在则跳过它们 - 我目前正在登陆错误(因为我的方法是错误的......)

我已经部署了一个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.

1 个答案:

答案 0 :(得分:21)

我很惊讶,对于通常不存在的属性的空值测试永远 - 您应该做的是检查它是否存在,而不是它是否为空:< / p>

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