2012-04-11 3 views
7

У меня есть XML, который я обрабатываю в python через lxml.Как проверить, существует ли атрибут в некотором 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

Я удивлен, что тест на нулевые значения для атрибута, который часто не существует, работает ever - то, что вы должны делать, это проверить, существует ли он, не является ли он пустым:

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

Ahhh. Вот как это работает. (Я тоже был удивлен ....). Спасибо за ваше время, я ценю это. Это полностью его исправляет. – Jay

Смежные вопросы