繁体   English   中英

在Jython中解析大型XML文档的最佳方法

[英]Best way to parse large XML document in Jython

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

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

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

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

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

听起来您正在达到默认的扩展限制。 请参阅以下说明:

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

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

(添加),另请参见此问题答案。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM