2012-04-11 33 views
7

Tengo un XML que estoy analizando en python a través de lxml.Cómo probar si existe un atributo en algún XML

Me encuentro con situaciones en las que algunos elementos tienen atributos y otros no.

necesito para extraerlos si es que existen, pero evita que si no lo hacen - Actualmente estoy aterrizaje con errores (como mi enfoque es erróneo ...)

He desplegado un testfornull, pero eso no funciona en todos los casos:

Código:

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> 

Mi método actual sólo puede tratar con A, B o D. No puede hacer frente a C

Respuesta

17

Me sorprende que una prueba de valores nulos en un atributo que a menudo no existirá funciona siempre: lo que debe hacer es verificar si existe, no si está vacío:

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

Ahhh. asi es como funciona. (También me sorprendió ...). Gracias por su tiempo, lo aprecio. Eso lo arregla completamente. – Jay

Cuestiones relacionadas