Как создать 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, оно не выдает ошибки компилятора, но, похоже, не работает ... как мне создать текстовый узел?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
20
0
24 134
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Установка атрибута для объекта не приведет к ошибке времени компиляции или выполнения, она просто не сделает ничего полезного, если объект не получит к нему доступ (например, «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)

@ Дэниел

Спасибо за ответ, я тоже понял, как это сделать с минидомом (я не уверен в разнице между ElementTree и минидомом)


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)

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

Другие вопросы по теме