2012-03-12 15 views
10

Aquí está una parte de XML:texto después de la etiqueta en elementtree de Python

<item><img src="cat.jpg" /> Picture of a cat</item> 

La extracción de la etiqueta es fácil. Sólo hacer:

et = xml.etree.ElementTree.fromstring(our_xml_string) 
img = et.find('img') 

Pero, ¿cómo hacer para obtener el texto inmediatamente después de él (Imagen de un gato)? Hacer las siguientes declaraciones de una cadena en blanco:

print et.text 

Respuesta

18

Los elementos tienen un atributo tail - así que en vez de element.text, que está pidiendo element.tail.

>>> import lxml.etree 
>>> root = lxml.etree.fromstring('''<root><foo>bar</foo>baz</root>''') 
>>> root[0] 
<Element foo at 0x145a3c0> 
>>> root[0].tail 
'baz' 

O, por su ejemplo:

>>> et = lxml.etree.fromstring('''<item><img src="cat.jpg" /> Picture of a cat</item>''') 
>>> et.find('img').tail 
' Picture of a cat' 

Esto también funciona con elementtree claro:

>>> import xml.etree.ElementTree 
>>> xml.etree.ElementTree.fromstring(
... '''<item><img src="cat.jpg" /> Picture of a cat</item>''' 
...).find('img').tail 
' Picture of a cat' 
+3

brillante. Intenté usar '.tail' antes, pero lo estaba usando en mi _el_objeto. No me di cuenta de que tenía que usarlo en * img *. ¡Gracias por aclararme usted! – mae

Cuestiones relacionadas