Python: erro durante a geração do arquivo XML do dicionário python

0
ImportError: No module named elementtree.SimpleXMLWriter      

O código:

import xml.etree.cElementTree as ET 

root = ET.Element("root") 
doc = ET.SubElement(root, "doc") 
field1 = ET.SubElement(doc, "field1") 
field1.set("name", "blah") 
field1.text = "some value1" 
field2 = ET.SubElement(doc, "field2") 
field2.set("name", "asdfasd") 
field2.text = "some vlaue2" 
tree = ET.ElementTree(root) 
tree.write("filename.xml") 

Alguém pode ajudar?

    
por chirna 30.09.2013 / 10:46

1 resposta

1

Editar: Você nomeou seu script: xml.py ? Mude e isso deve funcionar.

Como solução alternativa, você pode usar etree no pacote lxml. Se você não tiver o lxml instalado, digite:

sudo apt-get install python-lxml

E para a versão modificada do seu programa:

import lxml.etree as ET 

root = ET.Element("root") 
doc = ET.SubElement(root, "doc") 
field1 = ET.SubElement(doc, "field1") 
field1.set("name", "blah") 
field1.text = "some value1" 
field2 = ET.SubElement(doc, "field2") 
field2.set("name", "asdfasd") 
field2.text = "some vlaue2" 
tree = ET.ElementTree(root) 
tree.write("filename.xml") 

Saída:

<root>
   <doc>
        <field1 name="blah">some value1</field1>
        <field2 name="asdfasd">some vlaue2</field2>
   </doc>
</root>

Para as diferenças entre as duas soluções, lxml.etree e ElementTree , dê uma olhada neste documento lxml.etree versus ElementTree .

cElementTree é ligeiramente mais rápido comparado a lxml.etree , de qualquer forma, o último ainda é um analisador xml rápido escrito em C, e acho que a diferença é insignificante (benchmarks aqui ).

    
por franzlorenzon 30.09.2013 / 11:27