迭代式編寫XML文件的快速方法是什麼(即,沒有將整個文檔存儲在內存中)? xml.sax.saxutils.XMLGenerator
有效,但速度很慢,在I7機器上約爲1MB/s。這是一個test case。如何快速從Python流式輸出XML輸出
4
A
回答
1
我意識到這個問題已被問到一段時間了,但同時,一個lxml
API已被引入,看起來很有希望解決這個問題:http://lxml.de/api.html;具體來說,請參閱以下部分:「增量XML生成」。
我很快通過流式傳輸10M文件來測試它,就像在您的基準測試中那樣,而且它在我的舊筆記本上花費了幾分之一秒,這絕不是非常科學,但與您的generate_large_xml()
完全相同功能。
0
如Yury V. Zaytsev提到的,lxml
真的爲以流方式
這裏生成XML文檔提供API是工作示例:
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)
生成的XML看起來像這樣(在內容從一個行XML文檔重新格式化):
<?xml version="1.0"?>
<root text="att text" tag="bagggg" published="now">root text
<record id="0">record text data</record>
<record id="1">record text data</record>
<record id="2">record text data</record>
<record id="3">record text data</record>
<record id="4">record text data</record>
<record id="5">record text data</record>
<record id="6">record text data</record>
<record id="7">record text data</record>
<record id="8">record text data</record>
<record id="9">record text data</record>
</root>
相關問題
- 1. 快速Java輸入\輸出流
- 2. 如何捕獲流輸出Python從subprocess.communicate()
- 3. C++中的快速輸入/輸出
- 4. 快速輸入輸出功能
- 5. XML輸出在python
- 6. 從python應用程序流式輸出alsa pcm揚聲器輸出
- 7. 輸出流緩衝輸出流附加
- 8. Python格式輸出
- 9. 輸出速度
- 10. 「減速」輸出
- 11. ElasticMapReduce流式壓縮輸出
- 12. 快速排序輸出不一致
- 13. 快速C++字符串輸出
- 14. 使用putchar_unlocked用於快速輸出
- 15. 如何從XML文件輸出HTML?
- 16. 如何從輸出中排除XML prolog?
- 17. 如何從portlet輸出純xml?
- 18. 速度更快:Web服務還是XML服務器輸出?
- 19. PHP - 格式化XML輸出
- 20. FOR XML EXPLICIT格式輸出
- 21. 以XML格式輸出PHP
- 22. Perl格式化輸出xml
- 23. 格式的XML輸出
- 24. 從PHP生成XML輸出
- 25. 從asp.net webservice xml輸出
- 26. 從API處理XML輸出
- 27. python子流程輸出到標準輸出
- 28. 在Python中的流標準輸出/標準輸出
- 29. java輸入輸出流
- 30. JBoss輸入/輸出流