我制作了一个简单的XML文件,并尝试打印子节点。我已经设法做到了,但只有当我首先验证我的人节点是Element的实例时,它才有效。我认为元素是节点的实例。
我在下面的代码中所做的只是从名为nameList的NodeList中获取每个项,并将其转换为一个元素,这样我就可以将它们打印到标准输出中。如果我不检查person是否是Element的实例,为什么会得到异常(java.lang.ClassCastException(?
提前感谢!
// Get the child nodes tag names from the root element
System.out.println("These are the names in child nodes: ");
NodeList nameList = element.getChildNodes();
for(int i = 0; i < nameList.getLength(); i++) {
Node person = nameList.item(i);
if (person instanceof Element){
Element name = (Element)person;
System.out.println(name);
}
}
根据JavaDocs,Element
扩展了Node
是正确的,但它不是node
的唯一子类
这本质上意味着在NodeList
中可能存在另一个扩展Node的对象,该对象不是Element,即w3c.Notation.
尝试将任何不是Element
或其子类的类强制转换为Element
将导致ClassCastException。