擅长:python、mysql、java
<p>通常,我建议使用ElementTree的<a href="http://effbot.org/zone/element-iterparse.htm" rel="nofollow noreferrer">^{<cd1>}</a>,或者为了提高速度,使用它的对应于<a href="http://codespeak.net/lxml/" rel="nofollow noreferrer">lxml</a>。还可以尝试使用<a href="http://pypi.python.org/pypi/processing" rel="nofollow noreferrer">Processing</a>(2.6内置)来并行化。在</p>
<p>关于<code>iterparse</code>的重要一点是,当元素(子)结构被解析时,就可以得到它们。在</p>
<pre><code>import xml.etree.cElementTree as ET
xml_it = ET.iterparse("some.xml")
event, elem = xml_it.next()
</code></pre>
<p>在本例中,<code>event</code>将始终是字符串<code>"end"</code>,但您也可以初始化解析器,以便在解析新元素时也告诉您新元素。你不能保证所有的子元素都会在那时被解析,但是属性在那里,如果你只对它感兴趣的话。在</p>
<p>另一点是您可以尽早停止从迭代器读取元素,即在整个文档被处理之前。在</p>
<p>如果文件很大(是吗?),有一个常见的习惯用法可以保持内存使用不变,就像在流式解析器中一样。在</p>