我做了类似于this的操作,但找不到将结果写入xml文件的方法。
答案 0 :(得分:11)
您链接到的网页上的代码使用doc.toprettyxml
从XML DOM创建字符串,因此您只需将该字符串写入文件:
f = open("output.xml", "w")
try:
f.write(doc.toprettyxml(indent=" "))
finally:
f.close()
在Python 2.6(或者我认为2.7,无论什么时候出现),你可以使用“with
”语句:
with open("output.xml", "w") as f:
f.write(doc.toprettyxml(indent=" "))
如果你放
,这也适用于Python 2.5from __future__ import with_statement
在文件的开头。
答案 1 :(得分:9)
coonj是正确的,但xml.dom.ext.PrettyPrint是越来越被忽视的PyXML扩展包的一部分。如果你想留在提供的标准迷你体内,你会说:
f= open('yourfile.xml', 'wb')
doc.writexml(f, encoding= 'utf-8')
f.close()
(或使用David提到的'with'语句使其略短。使用模式'wb'以避免Windows上不需要的CRLF换行符干扰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')
答案 2 :(得分:1)
f = open('yourfile.xml', 'w')
xml.dom.ext.PrettyPrint(doc, f)
f.close()