Ну, в соответствии с API документами , в модуле lxml etree нет метода "write". У вас есть несколько вариантов получения довольно напечатанной XML-строки в файл. Вы можете использовать метод tostring так:
f = open('doc.xml', 'w')
f.write(etree.tostring(root, pretty_print=True))
f.close()
Или, если ваш источник ввода не идеален и / или вам нужно больше ручек и кнопок для настройки выхода, вы можете использовать одну из оболочек python для библиотеки libid.
http://utidylib.berlios.de/
import tidy
f.write(tidy.parseString(your_xml_str, **{'output_xml':1, 'indent':1, 'input_xml':1}))
http://countergram.com/open-source/pytidylib
from tidylib import tidy_document
document, errors = tidy_document(your_xml_str, options={'output_xml':1, 'indent':1, 'input_xml':1})
f.write(document)