Analisando XML com namespaces usando ElementTree em Python

Eu tenho um xml, uma pequena parte dele se parece com isso:

<?xml version="1.0" ?>
<i:insert xmlns:i="urn:com:xml:insert" xmlns="urn:com:xml:data">
  <data>
    <image imageId="1"></image>
    <content>Content</content>
  </data>
</i:insert>

Quando eu o analiso usandoElementTree e salve-o em um arquivo que eu vejo a seguir:

<ns0:insert xmlns:ns0="urn:com:xml:insert" xmlns:ns1="urn:com:xml:data">
  <ns1:data>
    <ns1:image imageId="1"></ns1:image>
    <ns1:content>Content</ns1:content>
  </ns1:data>
</ns0:insert>

Por que ele altera prefixos e os coloca em todos os lugares? Usandominidom Eu não tenho esse problema. Está configurado? Documentação paraElementTree é muito pobre. O problema é que não consigo encontrar nenhum nó após essa análise, por exemploimage - não consigo encontrá-lo com ou sem espaço para nome, se eu o usar como{namespace}image ou apenasimage. Por que isso? Todas as sugestões são fortemente apreciadas.

O que eu já tentei:

import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for a in root.findall('ns1:image'):
    print a.attrib

Isso retorna um erro e o outro não retorna nada:

for a in root.findall('{urn:com:xml:data}image'):
    print a.attrib

Eu também tentei criar um espaço para nome como este e usá-lo:

namespaces = {'ns1': 'urn:com:xml:data'}
for a in root.findall('ns1:image', namespaces):
    print a.attrib

Não retorna nada. O que estou fazendo errado?

questionAnswers(2)

yourAnswerToTheQuestion