ClassCastException读取XML文件

xai*_*ain 1 java xml dom classcastexception

我有以下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> 
Run Code Online (Sandbox Code Playgroud)

我试图以这种方式加载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();
}
Run Code Online (Sandbox Code Playgroud)

但我得到异常java.lang.ClassCastException:org.apache.xerces.dom.DeferredTextImpl与 行中的org.w3c.dom.Element不兼容

Element c2 = (Element)c1.getFirstChild();
Run Code Online (Sandbox Code Playgroud)

在循环之前.

任何提示?谢谢.

mdm*_*dma 5

第一个子节点是c1结尾和c2开头之间的空格.

使用w3c DOM走树是不容易的.如果您不必使用w3c,我建议使用dom4j - 使用它会更好.例如,它将从元素中过滤文本节点,因此您可以调用

List children = c1.elements();
Run Code Online (Sandbox Code Playgroud)

或者,按名称限制

List children = c1.elements("c2");
Run Code Online (Sandbox Code Playgroud)