0

我需要从 Jython 解析一个大 (>800MB) XML 文件。XML 没有深度嵌套,包含大约一百万个相关元素。我需要将这些元素转换为真实对象。

我以前使用过nu.xom.*成功,但现在我已经从 Java 切换到 Jython,库失败并显示以下消息:

解析器在本文档中遇到了超过“64,000”个实体扩展;这是应用程序施加的限制。

我还没有找到解决这个问题的方法,所以我可能不得不寻找另一个 XML 库。它可以是 Java 或 Jython 兼容的 Python,并且应该是高效的。Pythonic 会很棒,nu.xom.*很简单但不是很 Pythonic。你有什么建议吗?

4

4 回答 4

4

Sax 是解析大型文档的最佳方式。

听起来您正在达到默认扩展限制。请参阅此注释:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4843787

您需要设置系统属性“entityExpansionLimit”来更改默认值。

(添加)另见这个问题的答案。

于 2011-02-24T23:39:15.237 回答
3

尝试使用 SAX 解析器,它非常适合流式传输大型 XML 文件。

于 2011-02-23T16:53:33.073 回答
3

jython 支持xml.etree.ElementTree吗?如果是这样,请使用该iterparse方法来减小内存大小。阅读内容并按照说明使用 elem.clear()。

于 2011-02-24T21:31:00.737 回答
0

有一个lxml python 库,可以解析大文件,而无需将数据加载到内存中。但我不知道我是否兼容 jython

于 2011-02-24T17:54:58.617 回答