我已閱讀了一些關於使用SAX解析器在Java中解析XML文件以使用DOM的優點的文章。 這吸引我的一個最(如討論here)是在SAX解析器中解析大型XML文件時無內存異常
薩克斯是適合大型XML文件和SAX解析器不會加載XML文件作爲一個整體在存儲器中。
但現在我已經使用SAX推導出實體的XML文件的一個大的文件幾乎1.4 GB它生成以下異常編寫的解析器。
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; The parser has encountered more than "64,000" entity expansions in this document; this is the limit imposed by the application.
如果整個文件沒有加載到內存中,內存的問題是什麼?
我該如何解決這個問題?
這不一定是一個實際的內存限制,而是針對[this one](https://en.wikipedia.org/wiki/Billion_laughs)等DOS攻擊的保護措施。如果你的輸入XML合法地包含了許多實體,你可以在你的解析器中增加這個限制。看看它的文檔。 – Tomalak 2015-04-02 19:25:30
你建議我用這種保護措施做什麼? – 2015-04-02 19:31:36
我以爲我說過。 – Tomalak 2015-04-02 19:38:37