【发布时间】:2021-04-18 21:20:05
【问题描述】:
我制作了一个简单的 XML 文件,我正在尝试打印子节点。我已经设法做到了,但它只有在我首先验证我的 person 节点是 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);
}
}
【问题讨论】:
-
如果你无论如何都进行强制转换,你会得到一个异常(可能是 ClassCastException),因此你的 NodeList 中有不是元素的节点。因为如果它们是元素,你就不会得到例外。所以问题是——它们是什么?为什么不添加一个“else”子句来打印它们是什么(比如类名)?
-
如果不检查
person是否为Element对象,会出现什么异常?哪一行会产生你得到的异常? -
抛出的异常是第 7 行的 java.lang.ClassCastException “元素名称 = (Element)person;”
标签: java xml element instanceof