私のコードで、次のクラスを使用して、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;
ここに私のコードが投げているエラー:
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());
エラーがこれです:それは次のようにコンソールにデータを印刷しようとした場合でも
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)
私はそれがnode.getNodeValue()
XMLデータの特定のポイントで読み取ることができません。
このエラーを取り除くことはできません。私を助けてください。
@ Peter:あなたが言うことは理にかなっています。しかし、なぜXMLパーザを使用してXMLではないHTMLを解析するのだろうと思われますか? – Cratylus
@ user384706 HTMLは単なる例です。ネストのレベルが多すぎると、再帰を使用するパーサーが爆発する可能性があります。 –
@ Peter:わかりました。私は、問題はタグとは無関係で、再帰自体ではないと思っていました – Cratylus