2012-02-12 57 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。