Как получить вывод xml в файл с новой строкой, используя python xml.etree?

Я создаю файл xml, используя «из xml.etree import ElementTree» и помещая сгенерированный вывод в новый файл «test.xml». Вывод помещается в test.xml, но новой строки нет, это большая большая строка. Итак, что мне делать, чтобы внутри "test.xml" появилась новая строка. Ниже приведен сценарий:

from xml.etree import ElementTree
from xml.dom import minidom
from lxml import etree
def prettify(elem):
    """Return a pretty-printed XML string for the Element.
    """
    rough_string = ElementTree.tostring(elem, 'utf-8')
    reparsed = minidom.parseString(rough_string)
    return reparsed.toprettyxml(indent="  ")
top = Element('my_document')
comment = Comment('Practising')
top.append(comment)
child = SubElement(top, 'my_information')
childs = SubElement(child,'my_name')
childs.text = 'This child contains text.'
print prettify(top)
file = open("test.xml", 'w')
xml.ElementTree(top).write(file)
file.close()

person Learner    schedule 05.01.2016    source источник


Ответы (1)


Почему бы вам не использовать возвращаемое значение prettify? Написание возвращаемого значения функции решит вашу проблему.

...
top = Element('my_document')
comment = Comment('Practising')
top.append(comment)
child = SubElement(top, 'my_information')
childs = SubElement(child,'my_name')
childs.text = 'This child contains text.'
with open("test.xml", 'w') as f:  # <--
    f.write(prettify(top))        # <--
person falsetru    schedule 05.01.2016