Форум сайта python.su
2
Создаётся файл, но все тэги в одну строку (если открыть простым текстовым редактором-блокнотом):
<MAINTAG><TAG1></TAG1></MAINTAG>
<MAINTAG> <TAG1> </TAG1> </MAINTAG>
Офлайн
103
нужно использовать pretty_print=True
outFile = open('test.xml', 'w') doc.write(outFile, pretty_print=True)
Отредактировано terabayt (Июнь 29, 2015 15:13:16)
Офлайн
2
root = etree.Element("ROOT") doc = etree.ElementTree(root) xmldeclaration = etree.tostring(root, encoding = "Windows-1251", standalone = "Yes") outfile = open(fullPathName, 'wb') outfile.write(xmldeclaration) outfile.close()
Отредактировано Pluto (Июнь 30, 2015 06:27:53)
Офлайн
568
xmldeclaration = etree.tostring(root, encoding = "Windows-1251", standalone = "Yes", pretty_print = True)
Офлайн
2
На данный параметр lxml не ругается, но как были тэги в одну строку, так остались.
Офлайн
568
Странно. Вот так будет работать, но это какой-то кривой костыль.
import xml.dom.minidom xml = xml.dom.minidom.parseString("<MAINTAG><TAG1></TAG1></MAINTAG>") with open("asxcas.xml", 'wb') as outfile: outfile.write(xml.toprettyxml())
Офлайн
2
Да уж. Создать xml, затем его отпарсить, и заново записать.
Блин, мне нужен “красивый” xml 
Офлайн
568
PlutoКрасивое решение дано выше.
Блин, мне нужен “красивый” xml
Офлайн
857
>>> import lxml.etree >>> >>> def f(s): ... return lxml.etree.tostring( ... lxml.etree.fromstring(s), ... pretty_print=True, ... encoding='unicode') ... >>> s = '<MAINTAG><TAG1><TAG11>text11</TAG11></TAG1>' \ ... '<TAG2><TAG21>text21</TAG21></TAG2></MAINTAG>' >>> >>> print(f(s)) <MAINTAG> <TAG1> <TAG11>text11</TAG11> </TAG1> <TAG2> <TAG21>text21</TAG21> </TAG2> </MAINTAG> >>>
PlutoКстати, несложно написать функцию, которая сама форматирует XML так, как надо. (Иногда pretty_print делает не то.)
А хочу так:
Отредактировано py.user.next (Июнь 30, 2015 08:43:15)
Офлайн
253
Обычно форматирую xml если его смотрю глазами в редакторе. А редактор обычно умеет форматировать xml и без Питона. например в sublime text можно поставить пакет indent xml ну так далее. Если пишу документы массово то это стараюсь формат xml не использовать. Поэтому программное форматирование xml оказалось для меня не актуально.
Офлайн