ElementTree Запись в XML

Какой самый простой способ записать отредактированный корень XML в новый файл? Это то, что у меня есть до сих пор, и оно выдает AttributeError: объект 'module' не имеет атрибута 'write'
PS: я не могу использовать никакой другой API, кроме ElementTree.

import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element, SubElement, Comment
from ElementTree_pretty import prettify
tree = ET.parse('file-to-be-edited.xml')
root = tree.getroot()

#Process XML here

ET.write('file-after-edits.xml')

person user1195192    schedule 05.09.2016    source источник


Ответы (2)


Ваш tree представляет собой объект ElementTree, который предоставляет write() метод записи дерева. Например:

#Process XML here
tree.write('file-after-edits.xml', encoding='utf8')
person mhawke    schedule 06.09.2016
comment
Спасибо за решение. Глупая ошибка с моей стороны. Можно ли как-то улучшить сгенерированный файл? - person user1195192; 06.09.2016
comment
Вы можете использовать lxml, который предоставляет API, совместимый с ElementTree. Его метод tree.write() принимает аргумент pretty_print=True. - person mhawke; 06.09.2016
comment
Или используйте minidom, см.: stackoverflow.com/questions/749796 / - person mhawke; 06.09.2016

AttributeError: объект 'module' не имеет атрибута 'write' говорит о том, что вы не можете вызвать метод записи непосредственно из класса ElementTree, это не статический метод, попробуйте использовать tree.write('file-after-edits.xml'), дерево - это ваш объект из ElementTree .

person Vitor Ghiraldelli    schedule 05.09.2016
comment
В любом случае можно улучшить сгенерированный файл? - person user1195192; 06.09.2016