read open library example etree create python xml

open - ¿Cómo creo un documento xml en python?



xml python 3 (3)

Aquí está mi código de muestra:

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 ejecuto el código anterior, obtengo esto:

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

Me gustaría conseguir:

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

Adiviné que había una propiedad innerText, no da error de compilación, pero parece que no funciona ... ¿cómo hago para crear un nodo de texto?


@Daniel

Gracias por la respuesta, también descubrí cómo hacerlo con el minidom (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 que probé esto antes de publicar mi pregunta ...



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

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