Domanda

Ho il seguente file 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> 

Sto cercando di attributi carico di C2 in questo modo:

Document d =
 DocumentBuilderFactory.newInstance()
 .newDocumentBuilder()
 .parse("epxy.xml");
Element  c1 = d.getDocumentElement();
Element c2 = (Element)c1.getFirstChild();
while (c2 != null) {
  ...         
  c2 = (Element)c2.getNextSibling();
}

Ma ho l'eccezione java.lang.ClassCastException: org.apache.xerces.dom.DeferredTextImpl incompatibile con org.w3c.dom.Element nella linea

Element c2 = (Element)c1.getFirstChild();

prima del ciclo.

Eventuali suggerimenti? Grazie.

È stato utile?

Soluzione

Il primo bambino è lo spazio vuoto tra la fine del c1 e l'inizio del c2.

Utilizzo di W3C DOM di camminare l'albero non è così facile. Se non si dispone di utilizzare W3C, vi consiglio dom4j - è molto più bello di utilizzo. Ad esempio, sarà filtrare i nodi di testo da elementi, in modo da poter chiamare

List children = c1.elements();

o, per limitare al nome

List children = c1.elements("c2");

Altri suggerimenti

Il primo figlio di c1 è un nodo di testo che contiene il ritorno a capo. Hai bisogno di iterare i bambini saltare nodi di testo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top