У меня есть XML-файл, для работы с которым я использую etree из lxml, но когда я добавляю к нему теги, красивая печать, похоже, не работает.
>>> from lxml import etree
>>> root = etree.parse('file.xml').getroot()
>>> print etree.tostring(root, pretty_print = True)
<root>
<x>
<y>test1</y>
</x>
</root>
Пока все хорошо. Но сейчас
>>> x = root.find('x')
>>> z = etree.SubElement(x, 'z')
>>> etree.SubElement(z, 'z1').attrib['value'] = 'val1'
>>> print etree.tostring(root, pretty_print = True)
<root>
<x>
<y>test1</y>
<z><z1 value="val1"/></z></x>
</root>
это уже не красиво. Я также попытался сделать это «назад», где я создаю тег z1, затем создаю тег z и добавляю к нему z1, затем добавляю тег z к тегу x. Но я получаю тот же результат.
Если я не проанализирую файл и просто создаю все теги за один раз, он будет печататься правильно. Поэтому я думаю, что это как-то связано с разбором файла.
Как заставить работать красивую печать?