我有一些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.
答案 0 :(得分:21)
我很惊讶,对于通常不存在的属性的空值测试永远 - 您应该做的是检查它是否存在,而不是它是否为空:< / p>
if 'Reference' in current_element.attrib:
...do something with it...