显示 python 的 XML 解析器加载大文件时的进度

2024-04-28

我使用 Python 内置的 XML 解析器来加载 1.5 gig XML 文件,这需要一整天的时间。

from xml.dom import minidom
xmldoc = minidom.parse('events.xml')

我需要知道如何进入其中并测量其进度,以便我可以显示进度条。 有任何想法吗?

minidom 有另一种名为 parseString() 的方法,它返回一个 DOM 树,假设您传递的字符串是有效的 XML,如果我自己将文件分成块并一次将它们传递给 parseString,我是否可以合并所有DOM 树最终会重新组合在一起吗?


你的用例要求你使用 sax 解析器而不是 dom,dom 加载内存中的所有内容,sax 会逐行解析,并根据需要编写事件处理程序 所以可能是有效的,你也可以编写进度指示器

我还建议有时尝试一下 expat 解析器,它非常有用http://docs.python.org/library/pyexpat.html http://docs.python.org/library/pyexpat.html

使用 sax 的进度:

当 sax 增量读取文件时,您可以用自己的文件对象包装您传递的文件对象并跟踪已读取的量。

编辑: 我也不喜欢自己拆分文件并在最后加入 DOM 的想法,这样你最好编写自己的 xml 解析器,我建议使用 sax 解析器 我还想知道你读取 DOM 树中 1.5 gig 文件的目的是什么? 看起来萨克斯在这里会更好

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示 python 的 XML 解析器加载大文件时的进度 的相关文章

随机推荐