2012-04-11 5 views
7

Ho un codice XML che sto analizzando in Python tramite lxml.Come verificare se in alcuni XML esiste un attributo

Sto incontrando situazioni in cui alcuni elementi hanno attributi e altri no.

ho bisogno di estrarli se esistono, ma saltare loro se non lo fanno - Sono attualmente in atterraggio con errori (come il mio approccio è sbagliato ...)

Ho schierato una testfornull, ma che non funziona in tutti i casi:

Codice:

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> 

Il mio metodo corrente può trattare solo con A, B o D. Non può far fronte con C

risposta

17

Sono sorpreso che un test per valori nulli su un attributo che spesso non esisterà funziona sempre - ciò che dovresti fare è verificare se esiste, non se è vuoto:

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

Ahhh. questo è come funziona (Sono rimasto sorpreso anch'io ....). Grazie per il tuo tempo, lo apprezzo. Questo lo risolve completamente. – Jay