首页 > 解决方案 > 类型列表需要未经检查的转换以符合列表

问题描述

我正在尝试使用 SAXReader 解析 xml 文件。我无法使用元素生成节点列表。IDE提示警告“List需要未经检查的转换才能符合List”

我尝试使用简单的 org.w3c.dom 解析器,解析 xml 文件没有问题,并且运行良好。但是使用 SAXReader 生成列表时出现问题。

这是 XML 脚本

<class>
   <student rollno = "393">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
   </student>
</class>

这是解析器

         File inputFile = new File("input.xml");
         SAXReader reader = new SAXReader();
         Document document = reader.read( inputFile );

         System.out.println("Root element :" + document.getRootElement().getName());

         Element classElement = document.getRootElement();

         List<Node> nodes = document.selectNodes("/class/student" );
         System.out.println("----------------------------");

         for (Node node : nodes) {
            System.out.println("\nCurrent Element :"
               + node.getName());
            System.out.println("Student roll no : " 
               + node.valueOf("@rollno") );
            System.out.println("First Name : "
               + node.selectSingleNode("firstname").getText());

IDE 在此行提示警告

List<Node> nodes = document.selectNodes("/class/student" );

控制台日志打印显示根元素但显示以下堆栈跟踪的第一个 sysout

Root element :class
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext
    at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
    at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
    at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)
    at domParsing.EgParser.main(EgParser.java:25)
Caused by: java.lang.ClassNotFoundException: org.jaxen.NamespaceContext
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

(EgParser.java:25) 是

List<Node> nodes = document.selectNodes("/class/student" );

标签: javaxmllistdom4j

解决方案


推荐阅读