Estoy tratando de usar lxml.etree para analizar un documento de exportación de Wordpress (es XML, algo así como RSS). Sólo estoy interesado en los mensajes publicados, así que estoy usando el siguiente bucle a través de mensajes publicados:.Etiquetas con: en nombre en lxml
for item in data.findall("item"):
if item.find("wp:post_type").text != "post":
continue
if item.find("wp:status").text != "publish":
continue
write_post(item)
donde data
es la etiqueta que todos los item
etiquetas se encuentran en item
etiquetas contienen mensajes, páginas, y borradores. Mi problema es que lxml no puede encontrar etiquetas que tengan un :
en su nombre (por ejemplo, wp:post_type
). Cuando intento item.find("wp:post_type")
consigo este error:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "lxml.etree.pyx", line 1279, in lxml.etree._Element.find (src/lxml/lxml.e
tree.c:38124)
File "/usr/lib64/python2.7/site-packages/lxml/_elementpath.py", line 210, in f
ind
it = iterfind(elem, path)
File "/usr/lib64/python2.7/site-packages/lxml/_elementpath.py", line 200, in i
terfind
selector = _build_path_iterator(path)
File "/usr/lib64/python2.7/site-packages/lxml/_elementpath.py", line 184, in _
build_path_iterator
selector.append(ops[token[0]](_next, token))
KeyError: ':'
Asumo la KeyError : ':'
se refiere a los dos puntos en el nombre de la etiqueta de ser válido. ¿Hay alguna forma de que pueda escapar del colon para que lxml encuentre la etiqueta correcta? ¿Tiene algún significado especial :
en este contexto? ¿O estoy haciendo algo mal? Cualquier ayuda sería apreciada.
Gracias, esto resolvió mi problema. –