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 ).