質問

次の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を含むテキストノードです。テキストノードをスキップする子供たちを反復する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top