Для такой простой XML-структуры вы можете не захотеть использовать полномасштабный XML-модуль. Рассмотрим шаблон строки для простейших структур, или Jinja для чего-то более сложного. Jinja может обрабатывать переплетение списка данных для создания внутреннего xml вашего списка документов. Это немного сложнее с необработанными шаблонами строк python
. Для примера Jinja см. Мой ответ на аналогичный вопрос .
Вот пример генерации ваш файл xml с строковыми шаблонами.
import string
from xml.sax.saxutils import escape
inner_template = string.Template(' ${value} ')
outer_template = string.Template("""
${document_list}
""")
data = [
(1, 'foo', 'The value for the foo document'),
(2, 'bar', 'The for the document'),
]
inner_contents = [inner_template.substitute(id=id, name=name, value=escape(value)) for (id, name, value) in data]
result = outer_template.substitute(document_list='\n'.join(inner_contents))
print result
Выход:
The value for the foo document
The <value> for the <bar> document
Недостатком подхода шаблона является то, что вы не получите escape <
и >
бесплатно. Я танцевал вокруг этой проблемы, вытаскивая утилиту из xml.sax