Список типов требует неконтролируемого преобразования для соответствия списку <Node> - PullRequest
1 голос
/ 01 июня 2019

Я пытаюсь проанализировать XML-файл с помощью SAXReader. У меня возникли проблемы при создании списка узлов с использованием элементов. В среде 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, который показывает корневой элемент, но показывает следующую трассировку стека

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" );
...