微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我需要验证节点是否是 Element 的实例?

如何解决为什么我需要验证节点是否是 Element 的实例?

我制作了一个简单的 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);
        }
    }

解决方法

根据JavaDocs,您说Element 扩展Node 是正确的,但是它不是node 的唯一子类

这本质上意味着在您的 NodeList 中可能有另一个对象扩展 Node,它不是一个元素,即 w3c.Notation

尝试将任何类转换为不是 Element 或其子类的 Element 都会导致 ClassCastException。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。