类型列表需要未经检查的转换才能符合列表<node>

时间:2019-06-01 06:30:21

标签: java xml list dom4j

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

我尝试使用简单的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,该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" );

0 个答案:

没有答案