[英]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.