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

0 投票
4 回答
3334 浏览
提问于 2025-04-16 12:24

我需要用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”来改变默认值。

(补充)还可以查看这个问题的回答。

撰写回答