在Jython中解析大型XML文档的最佳方式
我需要用Jython来解析一个很大的XML文件(超过800MB)。这个XML文件的结构不算复杂,大约有一百万个相关的元素。我需要把这些元素转换成真实的对象。
我之前用过nu.xom.*
这个库,效果很好,但现在我从Java换成了Jython,这个库却出现了问题,报了以下错误信息:
解析器在这个文档中遇到了超过“64,000”个实体扩展;这是应用程序设定的限制。
我还没找到解决这个问题的方法,所以我可能需要找一个其他的XML库。这个库可以是Java的,也可以是兼容Jython的Python库,并且要高效。如果能更符合Python的风格就更好了,nu.xom.*
虽然简单,但不太符合Python的习惯。你有什么建议吗?
4 个回答
3
试试用SAX解析器,它非常适合处理大文件的XML数据。
3
jython支持 xml.etree.ElementTree
吗?如果支持的话,可以使用 iterparse
方法来减少内存的使用。可以查看 这个链接,并按照里面的说明使用 elem.clear()。
4
Sax是解析大文档的最佳方式。
听起来你遇到了默认的扩展限制。
请查看这个说明:
https://bugs.java.com/bugdatabase/view_bug?bug_id=4843787
你需要设置系统属性“entityExpansionLimit”来改变默认值。
(补充)还可以查看这个问题的回答。