如何将xml文件保存到磁盘?

时间:2021-11-27 09:55:14

I did something similar to this, but couldn't find a way to write the result to an xml file.

我做了类似的事情,但找不到将结果写入xml文件的方法。

3 个解决方案

#1


11  

The code on the web page you linked to uses doc.toprettyxml to create a string from the XML DOM, so you can just write that string to a file:

您链接到的网页上的代码使用doc.toprettyxml从XML DOM创建字符串,因此您只需将该字符串写入文件:

f = open("output.xml", "w")
try:
    f.write(doc.toprettyxml(indent="  "))
finally:
    f.close()

In Python 2.6 (or 2.7 I suppose, whenever it comes out), you can use the "with" statement:

在Python 2.6(或者我认为2.7,无论什么时候出现),你可以使用“with”语句:

with open("output.xml", "w") as f:
    f.write(doc.toprettyxml(indent="  "))

This also works in Python 2.5 if you put

如果放入,这也适用于Python 2.5

from __future__ import with_statement

at the beginning of the file.

在文件的开头。

#2


9  

coonj is kind of right, but xml.dom.ext.PrettyPrint is part of the increasingly neglected PyXML extension package. If you want to stay within the supplied-as-standard minidom, you'd say:

coonj是正确的,但xml.dom.ext.PrettyPrint是越来越被忽视的PyXML扩展包的一部分。如果你想留在标准的迷你服务范围内,你会说:

f= open('yourfile.xml', 'wb')
doc.writexml(f, encoding= 'utf-8')
f.close()

(Or using the ‘with’ statement as mentioned by David to make it slightly shorter. Use mode 'wb' to avoid unwanted CRLF newlines on Windows interfering with encodings like UTF-16. Because XML has its own mechanisms for handling newline interpretation, it should be treated as a binary file rather than text.)

(或者使用David提到的'with'语句使其略短。使用模式'wb'来避免Windows上不需要的CRLF换行符干扰UTF-16等编码。因为XML有自己的处理换行符解释的机制,所以应该被视为二进制文件而不是文本。)

If you don't include the ‘encoding’ argument (to either writexml or toprettyxml), it'll try to write a Unicode string direct to the file, so if there are any non-ASCII characters in it, you'll get a UnicodeEncodeError. Don't try to .encode() the results of toprettyxml yourself; for non-UTF-8 encodings this can generate non-well-formed XML.

如果你不包含'encoding'参数(对writexml或toprettyxml),它会尝试直接写一个Unicode字符串到文件,所以如果有任何非ASCII字符,你会得到一个UnicodeEncodeError。不要尝试.encode()你自己的toprettyxml的结果;对于非UTF-8编码,这可以生成非格式良好的XML。

There's no ‘writeprettyxml()’ function, but it's trivially simple to do it yourself:

没有'writeprettyxml()'函数,但这样做很简单:

with open('output.xml', 'wb') as f:
    doc.writexml(f, encoding= 'utf-8', indent= '    ', newl= '\n')

#3


1  

f = open('yourfile.xml', 'w')
xml.dom.ext.PrettyPrint(doc, f)
f.close()

#1


11  

The code on the web page you linked to uses doc.toprettyxml to create a string from the XML DOM, so you can just write that string to a file:

您链接到的网页上的代码使用doc.toprettyxml从XML DOM创建字符串,因此您只需将该字符串写入文件:

f = open("output.xml", "w")
try:
    f.write(doc.toprettyxml(indent="  "))
finally:
    f.close()

In Python 2.6 (or 2.7 I suppose, whenever it comes out), you can use the "with" statement:

在Python 2.6(或者我认为2.7,无论什么时候出现),你可以使用“with”语句:

with open("output.xml", "w") as f:
    f.write(doc.toprettyxml(indent="  "))

This also works in Python 2.5 if you put

如果放入,这也适用于Python 2.5

from __future__ import with_statement

at the beginning of the file.

在文件的开头。

#2


9  

coonj is kind of right, but xml.dom.ext.PrettyPrint is part of the increasingly neglected PyXML extension package. If you want to stay within the supplied-as-standard minidom, you'd say:

coonj是正确的,但xml.dom.ext.PrettyPrint是越来越被忽视的PyXML扩展包的一部分。如果你想留在标准的迷你服务范围内,你会说:

f= open('yourfile.xml', 'wb')
doc.writexml(f, encoding= 'utf-8')
f.close()

(Or using the ‘with’ statement as mentioned by David to make it slightly shorter. Use mode 'wb' to avoid unwanted CRLF newlines on Windows interfering with encodings like UTF-16. Because XML has its own mechanisms for handling newline interpretation, it should be treated as a binary file rather than text.)

(或者使用David提到的'with'语句使其略短。使用模式'wb'来避免Windows上不需要的CRLF换行符干扰UTF-16等编码。因为XML有自己的处理换行符解释的机制,所以应该被视为二进制文件而不是文本。)

If you don't include the ‘encoding’ argument (to either writexml or toprettyxml), it'll try to write a Unicode string direct to the file, so if there are any non-ASCII characters in it, you'll get a UnicodeEncodeError. Don't try to .encode() the results of toprettyxml yourself; for non-UTF-8 encodings this can generate non-well-formed XML.

如果你不包含'encoding'参数(对writexml或toprettyxml),它会尝试直接写一个Unicode字符串到文件,所以如果有任何非ASCII字符,你会得到一个UnicodeEncodeError。不要尝试.encode()你自己的toprettyxml的结果;对于非UTF-8编码,这可以生成非格式良好的XML。

There's no ‘writeprettyxml()’ function, but it's trivially simple to do it yourself:

没有'writeprettyxml()'函数,但这样做很简单:

with open('output.xml', 'wb') as f:
    doc.writexml(f, encoding= 'utf-8', indent= '    ', newl= '\n')

#3


1  

f = open('yourfile.xml', 'w')
xml.dom.ext.PrettyPrint(doc, f)
f.close()