2008-08-27 11 views
15

Aquí está mi código de ejemplo:¿Cómo se crea un documento XML en Python

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) 

cuando corro el código anterior me sale esto:

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

me gustaría llegar:

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

Acabo de adivinar que había una propiedad innerText, no da error del compilador, pero parece que no funciona ... ¿cómo hago para crear un guiño de texto? ¿mi?

Respuesta

8

Establecer un atributo en un objeto no dará un error en tiempo de compilación o en tiempo de ejecución, simplemente no servirá de nada si el objeto no accede (es decir, "node.noSuchAttr = 'bar'" tampoco daría un error)

A menos que necesite una característica específica de minidom, me gustaría ver 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) 
10

@ Daniel

Gracias por la respuesta, también me di cuenta de cómo hacerlo con el minidom (I no estoy seguro de la diferencia entre el elementtree vs el 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) 
 

juro intentado esto antes de publicar mi pregunta ...

Cuestiones relacionadas