Почему распределение на ArrayPool происходит быстрее, чем на Stack?

Для такой простой 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

0
задан Tomas Kubes 18 March 2019 в 20:31
поделиться