Jython与SAX解析器:实体数量限制在64000吗?

5 投票
1 回答
1572 浏览
提问于 2025-04-16 12:25

我在Jython中对一个很大的XML文件(800 MB)进行了简单测试,使用的是xml.sax解析器,结果遇到了以下错误:

Traceback (most recent call last):
  File "src/project/xmltools.py", line 92, in <module>
    sys.exit(main())
  File "src/project/xmltools.py", line 87, in main
    parser.parse(open(argv[1], "r"))
  File "/amd.home/home/user/workspace/jython-2.5.2/Lib/xml/sax/drivers2/drv_javasax.py", line 146, in parse
    self._parser.parse(JyInputSourceWrapper(source))
  File "/amd.home/home/user/workspace/jython-2.5.2/Lib/xml/sax/drivers2/drv_javasax.py", line 59, in fatalError
    self._err_handler.fatalError(_wrap_sax_exception(exc))
  File "/amd.home/home/user/workspace/jython-2.5.2/Lib/xml/sax/handler.py", line 38, in fatalError
    raise exception
xml.sax._exceptions.SAXParseException: <unknown>:1:1: The parser has encountered more than "64,000" entity expansions in this document; this is the limit imposed by the application.

这个“应用程序施加的限制”是什么意思,我该怎么解决这个问题呢?

我还尝试使用Java的XML库nu.xom,结果也遇到了同样的错误。

1 个回答

5

试着把 entityExpansionLimit 这个属性的值设置得比64000大。具体可以参考这个链接:http://download.oracle.com/javase/1.5.0/docs/guide/xml/jaxp/JAXP-Compatibility_150.html#JAXP_security

撰写回答