有许多方法可以读取XML,包括一次性(DOM)和一次一位(SAX).我使用SAX或lxml迭代读取大型XML文件(例如压缩6.5GB的维基百科转储).
但是,在对该XML文件进行一些迭代处理(使用ElementTree的python)之后,我想将(新)XML数据写出到另一个文件.
是否有任何库可以迭代地写出XML数据?我可以创建XML树,然后将其写出来,但如果没有大量的ram,这是不可能的.反正有迭代地将XML树写入文件吗?一次一点?
我知道我可以用print“<%s>”自己生成XML %tag_name等,但这似乎有点…… hacky.
解决方法:
Fredrik Lundh的elementtree.SimpleXMLWriter将允许您逐步写出XML.这是模块中嵌入的演示代码:
from elementtree.SimpleXMLWriter import XMLWriter
import sys
w = XMLWriter(sys.stdout)
html = w.start("html")
w.start("head")
w.element("title", "my document")
w.element("Meta", name="generator", value="my application 1.0")
w.end()
w.start("body")
w.element("h1", "this is a heading")
w.element("p", "this is a paragraph")
w.start("p")
w.data("this is ")
w.element("b", "bold")
w.data(" and ")
w.element("i", "italic")
w.data(".")
w.end("p")
w.close(html)