2012-07-26 12 views
5

Sto riscontrando qualche problema nell'utilizzo della libreria Python 2.6.5 xml.etree.ElementTree. In particolare, se l'installazione ho un semplice elemento XML come il seguenteComportamento booleano imprevisto degli elementi foglia di xml.etree.ElementTree di Python

>>> import xml.etree.ElementTree as etree 
>>> xml = etree.fromstring("<a><b><c>xy</c></b></a>") 

non ho problemi con la libreria quando si accede ai nodi elemento interno, ad esempio:

>>> etree.tostring(xml.find('b')) 
'<b><c>xy</c></b>' 
>>> xml.find('b') == None 
False 
>>> bool(xml.find('b')) 
True 

Tuttavia, sto incontrando uno strano interpretazione booleano di foglia nodi elemento, vedi:

>>> etree.tostring(xml.find('b/c')) 
'<c>xy</c>' 
>>> xml.find('b/c') == None 
False 
>>> bool(xml.find('b/c')) 
False 

Si noti che nel l'ultimo comando, l'elemento xml.find ('B/C') , che è chiaramente non-Nessuno, restituisce False. Questo è particolarmente fastidioso perché non posso usare l'idioma

>>> leaf = xml.find('b/c'): 
>>> if leaf: 
>>>  do_stuff(leaf) 

per verificare se esiste un elemento foglia. (Devo controllare esplicitamente per 'xml.find (' b/c ')! = Nessuno'.)

Qualcuno può spiegare questo comportamento (per me inaspettato)?

+0

Addendum: Non sto chiedendo altre librerie Python per gestire xml, voglio solo capire il comportamento del pacchetto della libreria data. – MRA

risposta

Problemi correlati