Como faço para criar um documento XML em python

votos
16

Aqui está 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)

quando eu executar o código acima fico com esta:

<?xml version=1.0 ?>
<foo/>

Eu gostaria de obter:

<?xml version=1.0 ?>
<foo>bar</foo>

Eu só adivinhado que havia uma propriedade innerText, não dá erro do compilador, mas não parece funcionar ... como faço para ir sobre a criação de um nó de texto?

Publicado 27/08/2008 em 01:21
fonte usuário
Em outras línguas...                            


3 respostas

votos
10

@ Daniel

Obrigado pela resposta, eu também descobri como fazê-lo com o 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 tentei isso antes de postar minha pergunta ...

Respondeu 27/08/2008 em 01:42
fonte usuário

votos
9

Definir um atributo em um objeto não vai dar um tempo de compilação ou um erro de tempo de execução, ele só vai fazer nada de útil se o objeto não acessá-lo (ou seja, " node.noSuchAttr = 'bar'" também não dá um erro).

A menos que você precisa de uma característica específica minidom, eu iria olhar para 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)
Respondeu 27/08/2008 em 01:35
fonte usuário

votos
4

Eu encontrei um tutorial bastante detalhado sobre o método minidom

Aqui está um tutorial para o método etree . É muito mais agradável de ler, e parece bastante simples. Ele também passa por análise de xml (brevemente)

Respondeu 27/08/2008 em 01:45
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more