¿Cómo se buscan las etiquetas específicas del espacio de nombres en XML usando Elementtree en Python?Analizando RSS con Elementtree en Python
tengo un documento XML/RSS como:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:wp="http://wordpress.org/export/1.0/"
>
<channel>
<title>sometitle</title>
<pubDate>Tue, 28 Aug 2012 22:36:02 +0000</pubDate>
<generator>http://wordpress.org/?v=2.5.1</generator>
<language>en</language>
<wp:wxr_version>1.0</wp:wxr_version>
<wp:category><wp:category_nicename>apache</wp:category_nicename><wp:category_parent></wp:category_parent><wp:cat_name><![CDATA[Apache]]></wp:cat_name></wp:category>
</channel>
</rss>
Pero cuando intento y encontrar todos: tags "wp categoría" haciendo:
import xml.etree.ElementTree as xml
tree = xml.parse(fn)
doc = tree.getroot()
categories = doc.findall('channel/wp:category')
me sale el error:
SyntaxError: prefix 'wp' not found in prefix map
La búsqueda de cualquier campo no específico del espacio de nombres funciona bien. ¿Qué estoy haciendo mal?
Esto no tiene sentido. Los prefijos del espacio de nombres se definen en la etiqueta principal. No debería tener que analizar previamente mi documento RSS para que pueda alimentar con cuchara los espacios de nombres de mi analizador RSS ... –
Cerin
No discuto contigo, solo digo que así fue como lo solucioné. – Tom