擅长:python、mysql、java
<p>如果我对您的示例运行<code>etree.iterparse</code>,它会发现两次<code>'product'</code>标记:有一个外部的,一个内部的<code><product></code>。external标记有子元素,其<code>text</code>为空。因此,您需要跳过那些外部的<code>'product'</code>标记,以便只处理那些没有子元素的标记,例如:</p>
<pre><code>for event, elem in etree.iterparse(f, events=('end',), tag='product'):
if not len(elem):
save_product(elem)
</code></pre>
<hr/>
<p>如果需要处理top<code>product</code>标记的所有元素,则可以删除主循环中的所有内部<code>product</code>字段,然后按路径处理所有子元素,例如<a href="https://stackoverflow.com/questions/5501572/pythons-lxml-and-iterparse-method">python's lxml and iterparse method</a>:</p>
^{pr2}$