2012-07-26 28 views
5

Tengo problemas para usar la biblioteca Python 2.6.5 xml.etree.ElementTree. En particular, si la instalación lo que un elemento XML simple como la siguienteComportamiento booleano inesperado de elementos de hoja xml.etree.ElementTree de Python

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

no tengo problemas con la biblioteca cuando se accede a los nodos de elementos internos, por ejemplo:

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

Sin embargo, me encuentro con una extraña interpretación booleana de la hoja de nodos de elemento, véase:

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

Obsérvese que en el último comando, el xml.find elemento ('b/c') , que claramente no es None, evalúa a False. Esto es especialmente molesto ya que no puedo usar la expresión idiomática

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

para verificar si existe un elemento de hoja. (Tengo que comprobar explícitamente para 'xml.find (' b/c ')! = Ninguno'.)

¿Puede alguien explicar este comportamiento (para mí inesperado)?

+0

Adición: No estoy pidiendo otras bibliotecas de Python para manejar xml, solo quiero entender el comportamiento del paquete de la biblioteca dada. – MRA

Respuesta

Cuestiones relacionadas