Como faço para criar um documento xml em python
Pergunta
Aqui é o meu código de exemplo:
from xml.dom.minidom import *
def make_xml():
doc = Document()
node = doc.createElement('foo')
node.innerText = 'bar'
doc.appendChild(node)
return doc
if __name__ == '__main__':
make_xml().writexml(sys.stdout)
ao executar o código acima eu posso conseguir isso:
<?xml version="1.0" ?>
<foo/>
Eu gostaria de obter:
<?xml version="1.0" ?>
<foo>bar</foo>
Eu só podia imaginar que houve uma propriedade innerText, ele não dá nenhum erro de compilador, mas não parece funcionar...como faço para ir sobre a criação de um nó de texto?
Solução
A definição de um atributo em um objeto não dar tempo de compilação ou um erro de tempo de execução, o que não vai fazer nada de útil se o objeto não acessa-lo (por exemplo,"node.noSuchAttr = 'bar'
"também não dar erro).
A menos que você precise de uma funcionalidade específica do minidom
, Eu ia olhar ElementTree
:
import sys
from xml.etree.cElementTree import Element, ElementTree
def make_xml():
node = Element('foo')
node.text = 'bar'
doc = ElementTree(node)
return doc
if __name__ == '__main__':
make_xml().write(sys.stdout)
Outras dicas
@Daniel
Obrigado pela resposta, eu também descobri como fazê-lo com a minidom (não tenho certeza da diferença entre o ElementTree vs o minidom)
from xml.dom.minidom import *
def make_xml():
doc = Document();
node = doc.createElement('foo')
node.appendChild(doc.createTextNode('bar'))
doc.appendChild(node)
return doc
if __name__ == '__main__':
make_xml().writexml(sys.stdout)
Eu juro que eu tentei isso antes de postar minha pergunta...
Eu encontrei um muito detalhado tutorial sobre o método minidom
Aqui está um tutorial para o etree método.É muito mais agradável de ler, e parece bastante simples.Ele também vai análise (parsing) de xml (brevemente)