coonj вроде бы правильно, но xml.dom.ext.PrettyPrint является частью все более забытого пакета расширений PyXML. Если вы хотите остаться в рамках стандартного минидома, вы бы сказали:
f= open('yourfile.xml', 'wb')
doc.writexml(f, encoding= 'utf-8')
f.close()
(Или с помощью оператора 'with', упомянутого Дэвидом, чтобы сделать его немного короче. Используйте режим 'wb', чтобы избежать нежелательных новых строк CRLF в Windows, мешающих кодировкам типа UTF-16. Потому что у XML есть свои собственные механизмы для обработки новой строки интерпретация, она должна рассматриваться как двоичный файл, а не текст.)
Если вы не включите аргумент 'encoding' (в writexml или toprettyxml), он попытается записать строку Unicode непосредственно в файл, поэтому, если в нем есть какие-либо не-ASCII-символы, вы ' Я получу UnicodeEncodeError. Не пытайтесь самостоятельно .encode () получить результаты toprettyxml; для кодировок не-UTF-8 это может генерировать некорректно сформированный XML.
Там нет функции writeprettyxml (), но тривиально просто сделать это самостоятельно:
with open('output.xml', 'wb') as f:
doc.writexml(f, encoding= 'utf-8', indent= ' ', newl= '\n')