ClassCastException XMLファイルを読み取ります
-
04-10-2019 - |
質問
次のXMLファイルがあります。
<?xml version="1.0" encoding="UTF-8"?>
<c1>
<c2 id="0001" n="CM" urlget="/at/CsM" urle="/E/login.jsp">
</c2>
<c2 id="0002" n="C2M" urlget="/a2t/CsM" urle="/E2/login.jsp">
</c2>
</c1>
このようにC2の属性をロードしようとしています。
Document d =
DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse("epxy.xml");
Element c1 = d.getDocumentElement();
Element c2 = (Element)c1.getFirstChild();
while (c2 != null) {
...
c2 = (Element)c2.getNextSibling();
}
しかし、私は例外を取得します java.lang.classcastexception:org.apache.xerces.dom.deferredtextimpl org.w3c.dom.elementと互換性がないラインで
Element c2 = (Element)c1.getFirstChild();
ループの前。
ヒントはありますか?ありがとう。
解決
最初の子供は、C1の終わりからC2の開始の間の白人です。
W3C DOMを使用して木を歩くのはそれほど簡単ではありません。 W3Cを使用する必要がない場合は、お勧めします DOM4J - 使用する方がずっといいです。たとえば、要素からテキストノードをフィルタリングするので、呼び出すことができます
List children = c1.elements();
または、名前で制限する
List children = c1.elements("c2");
他のヒント
C1の最初の子は、Newlineを含むテキストノードです。テキストノードをスキップする子供たちを反復する必要があります。
所属していません StackOverflow