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)?
Addendum: Non sto chiedendo altre librerie Python per gestire xml, voglio solo capire il comportamento del pacchetto della libreria data. – MRA