lettura del file XML ClassCastException
-
04-10-2019 - |
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.
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.