Как создать XML-документ в 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)

когда я запускаю приведенный выше код, я получаю следующее:

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

Я хотел бы получить:

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

Я только догадывался, что есть свойство innerText, оно не дает ошибки компилятора, но, похоже, не работает... как мне создать текст node?

Ответы

Ответ 1

Настройка атрибута объекта не даст времени компиляции или времени выполнения, она просто ничего не принесет пользы, если объект не получит к ней доступа (т.е. "node.noSuchAttr = 'bar'" также не даст ошибка).

Если вам не нужна конкретная функция minidom, я бы посмотрел на 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)

Ответ 2

@Daniel

Спасибо за ответ, я также выяснил, как это сделать с мини-мидом (я не уверен в различии между ElementTree и 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)

Клянусь, я попробовал это, прежде чем публиковать свой вопрос...