我在我的代碼中使用下列類來解析3.43MB的巨大XML數據,並試圖將節點值檢索到哈希表中。在解析java文件中的XML文件時得到錯誤
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
我在這裏的代碼拋出錯誤:
String nodeValue=node.getNodeValue();
Error is:
Exception in thread "main" java.lang.StackOverflowError
at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.DeferredTextImpl.synchronizeData(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.CharacterDataImpl.getNodeValue(Unknown Source)
即使嘗試打印數據在控制檯這樣的:
System.out.println(node.getNodeValue());
錯誤是這樣的:
Exception in thread "main" java.lang.StackOverflowError
at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.DeferredTextImpl.synchronizeData(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.CharacterDataImpl.getNodeValue(Unknown Source)
我相信node.getNodeValue()
無法讀取XML數據的某個點。
我無法擺脫這個錯誤。請幫幫我。
@ Peter:你說什麼是有道理的,但你爲什麼會懷疑有人會用XML解析器來解析不是XML的HTML? – Cratylus 2011-12-27 10:53:34
@ user384706 HTML僅僅是一個例子。任何嵌套級別過高的文件都可能導致使用遞歸的解析器炸燬。 – 2011-12-27 10:58:22
@ Peter:我明白了。我認爲問題是不匹配的標籤而不是遞歸本身 – Cratylus 2011-12-27 11:11:59