【发布时间】:2021-05-02 05:55:07
【问题描述】:
我正在解析一个太大而无法完全加载到内存中的 XML 文件,所以我使用 xml.etree.ElementTree.iterparse 来解析它。
我遇到的问题是有时,当我从迭代器中检索一个元素时,我发现我的 XML 文件中存在的一些信息被 ElementTree 忽略了。这是预期的行为吗?
一个例子
...
<car>
<engine>
<part name="pump"\>
<part name="ECU"\>
</engine>
</car>
...
假设我用xml.etree.ElementTree.iterparse 迭代器解析上面的XML sn-p。在给定的实例中,迭代器给了我元素 elem,它指向 XML car 元素。
然后,我执行xml.etree.ElementTree.dump(elem) 以查看elem 捕获实际XML 数据的能力,我得到:
<car>
<engine>
<part name="pump"/>
<part/>
</engine>
<car>
现在,请注意第二个 part 元素的名称是如何未被捕获的。为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
请提供正确的minimal reproducible example(我们可以复制、粘贴和运行的完整代码)。
标签: python xml elementtree iterparse