我正在解析一个太大而无法完全加载到内存中的 XML 文件,所以我使用 anxml.etree.ElementTree.iterparse
来解析它。
我遇到的问题是,有时,当我从迭代器中检索一个元素时,我发现我的 XML 文件中存在的一些信息被 ElementTree 忽略了。这是预期的行为吗?
一个例子
...
<car>
<engine>
<part name="pump"\>
<part name="ECU"\>
</engine>
</car>
...
假设我正在使用xml.etree.ElementTree.iterparse
迭代器解析上面的 XML 片段。在给定的实例中,迭代器给了我 element elem
,它指向 XMLcar
元素。
然后,我执行xml.etree.ElementTree.dump(elem)
以查看elem
捕获实际 XML 数据的效果,我得到:
<car>
<engine>
<part name="pump"/>
<part/>
</engine>
<car>
现在,请注意第二个part
元素的名称是如何未被捕获的。为什么会发生这种情况,我该如何解决?