Por defecto, cuando se llama ElementTree.parse (someXMLfile) los prefijos biblioteca de Python elementtree cada nodo analizado con ella es URI de espacio en la notación de Clark:Alter espacio de nombres prefijar con elementtree en Python
{http://example.org/namespace/spec}mynode
Esto hace que el acceso a nodos específicos por nombre un gran dolor más adelante en el código.
He leído los documentos en ElementTree y namespaces y parece que la función iterparse()
debería permitirme alterar la forma en que el analizador prefija espacios de nombres, pero durante mi vida no puedo cambiar el prefijo . Parece que puede suceder en el fondo antes del evento ns-inicio incluso incendios como en este ejemplo:
for event, elem in iterparse(source):
if event == "start-ns":
namespaces.append(elem)
elif event == "end-ns":
namespaces.pop()
else:
...
¿Cómo puedo hacer que cambie el comportamiento prefijar y qué es lo más apropiado para volver cuando termina la función ?
interesante. Me gustaría saber también. La forma en que procedo es creando "constante" XHTML_NS = '{http://www.w3.org/1999/xhtml}' y luego usando en el código XHTML_NS + "mynode" – karlcow
¿Puede explicar lo que realmente está tratando de lograr? ? ¿Por qué la notación de Clark es un gran dolor? –
Estoy tratando de integrar con el código existente que accede a las cosas por su prefijo original (es decir, 'openSearch', en lugar de' {http://a9.com/-/spec/opensearchrss/1.0/} ') y estaba esperando había una manera más agradable que construir el tipo de mapa de prefijo que menciona @karlcow. –