擅长:python、mysql、java
<p>如果你这样做了</p>
<pre><code>for element in xmlroot.iterfind(".//mytag"):
do some thing
</code></pre>
<p>然后将从XML文件中一次检索一个元素(每个循环一个元素)。</p>
<p>如果你这样做了</p>
<pre><code>for element in xmlroot.findall(".//mytag"):
do some thing
</code></pre>
<p>所有元素将立即检索并存储到(临时)列表中。只有到那时,<code>for</code>循环才会开始遍历该列表。</p>
<p>这意味着第二个方法在开始时花费更长的时间(因为它必须构建这个列表),并且使用更多的内存(同样的原因)。另外,如果在到达最后一个元素之前需要退出<code>for</code>循环,那么您将完成不必要的工作。另一方面,一旦进入<code>for</code>循环,第二个方法可能会更快一些。通常,第一种方法(“惰性评估”)的好处大于这个缺点。</p>
<p>在您的情况下,切换到<code>findall</code>可能是安全的。</p>