ClassCastException读取XML文件
-
04-10-2019 - |
题
我有以下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的文本节点。您需要迭代孩子跳节点的孩子。
不隶属于 StackOverflow