我正在尝试使用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" );