Question

Je le fichier XML suivant:

<?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> 

Je suis en train de les attributs de charge c2 cette façon:

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

Mais je reçois l'exception java.lang.ClassCastException: org.apache.xerces.dom.DeferredTextImpl incompatible avec org.w3c.dom.Element dans la ligne

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

avant de la boucle.

Les conseils? Merci.

Était-ce utile?

La solution

Le premier enfant est l'espace entre les la fin de c1 et le début de c2.

En utilisant DOM w3c marcher l'arbre est pas si facile. Si vous ne devez pas utiliser w3c, je vous recommande dom4j - il est beaucoup plus agréable à utiliser. Par exemple, il va filtrer les nœuds de texte à partir d'éléments, de sorte que vous pouvez appeler

List children = c1.elements();

ou de limiter le nom

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

Autres conseils

Le premier enfant de c1 est un nœud de texte contenant la nouvelle ligne. Vous devez itérer les enfants à sauter les nœuds de texte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top