2012-02-12 54 views
2

我有一個非常大的XML文件,含有40,000個標記元素。 當我使用元素樹來解析這個文件時,它會給內存帶來錯誤。 那麼是否有python中的任何模塊可以讀取數據塊中的xml文件,而無需將整個xml加載到內存中?我如何實現該模塊?如何解析分塊的XML文件

+2

我不是pythonist,但是查找用於解析XML的SAX(不是DOM)方法。 – 2012-02-12 13:44:13

+3

只要問題不需要隨機訪問標籤,SAX就是完美的。如果情況並非如此,如果有辦法在內存中構建更緊湊的數據表示,您仍然可以使用它。 – 2012-02-12 13:50:38

+0

lxml是最好的..建議n使用IBM以及:) – codersofthedark 2012-03-14 05:53:37

回答

2

在Python中使用XML的最好的庫可能是lxml,在這種情況下,您應該對iterparse/iterwalk感興趣。

+2

http://stackoverflow.com/questions/7171140/using-python-iterparse-for-large-xml-files這是值得注意的時候使用大的XML文件。 – 2012-02-12 13:58:39

2

這是人們通常使用sax解決的問題。

如果您的大文件基本上是一堆內部聚集的XML文檔和整個XML信封,那麼我會建議使用sax(或純字符串解析)將它分解成一系列單個文檔,然後您可以使用它lxml.etree。