迭代编写XML文件的快速方法是什么(即没有将整个文档放在内存中)? xml.sax.saxutils.XMLGenerator
工作但很慢,在I7机器上大约1MB / s。这是test case。
答案 0 :(得分:3)
我意识到这个问题已经被问过了一段时间,但是,同时引入了lxml
API,在解决问题方面看起来很有希望:http://lxml.de/api.html;具体来说,请参阅以下部分:“增量XML生成”。
我通过像你的基准测试那样流式传输一个10M文件来快速测试它,并且在我的旧笔记本电脑上花了不到一秒钟,这绝不是非常科学的,但它与你的{{ 1}}功能。
答案 1 :(得分:1)
正如Yury V. Zaytsev所述,[ { socket object }, { socket object } ]
真正提供了以流方式生成XML文档的API
以下是工作示例:
lxml
生成的XML看起来像这样(从单行XML文档重新格式化的内容):
from lxml import etree
fname = "streamed.xml"
with open(fname, "w") as f, etree.xmlfile(f) as xf:
attribs = {"tag": "bagggg", "text": "att text", "published": "now"}
with xf.element("root", attribs):
xf.write("root text\n")
for i in xrange(10):
rec = etree.Element("record", id=str(i))
rec.text = "record text data"
xf.write(rec)