Я работаю с очень большими файлами XML (> 1 ГБ) и мне нужен метод для их постепенной записи.
Существует один элемент верхнего уровня и тысячи больших элементов 2-го уровня (каждый имеет свою собственную многоуровневую иерархию).
Я попробовал это:
from lxml import etree
with etree.xmlfile(out_file_name, encoding = 'UTF-8') as xf:
xf.write_declaration()
with xf.element('top'):
xf.write('\n')
# parse individual input files and write the 2nd level element to the output
for file_name in file_list:
context = etree.iterparse(file_name, tag='my_2nd_level_tag', remove_blank_text = True)
for _, elem in context:
xf.write(elem, pretty_print=True))
В результате элемент top имеет одинаковый (нулевой) отступ, как элемент 2-го уровня.
Я ищу чистый способ использования инкрементных XML-записей lxml для создания полностью с отступом XML.