我正在使用带有最新lxml库的python 2.7版本。我正在解析一个非常同质化结构和数百万个元素的大型XML文件。我认为lxml的
我看到目标解析器接口是一种可能性,但我不确定它是否会更好。
iterparse
在解析时不会构建内部树,但显然它确实这样做了,因为内存使用量增加到崩溃(约1GB)。有没有一种方法可以在不使用太多内存的情况下使用lxml解析大型XML文件?我看到目标解析器接口是一种可能性,但我不确定它是否会更好。
ET.iterparse
时使用events = ('start',)
并将其传递给fast_iter
的情况下。在这种情况下,元素在到达起始标记后而不是到达结束标记后被删除。这可能会导致错误(逻辑或语法)。此代码演示了这个问题。如果这是您看到的错误,则修复方法是将start
更改为end
。 - unutbu