Я пытаюсь проанализировать 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" );