我刚刚开始学习基于TutorialsPoint的JAVA xml = DOM4J,它可以更灵活地解析xml代码。所以我专注于理解DOM4J,因为与DOM解析器和JDOM相比,它的编码更少。
我在打印Node的输出时遇到问题。任何帮助将不胜感激!请耐心等待我,因为我还在学习如何使用它并更熟悉它。为了更多的理解,请轻松解释如何正确执行它。谢谢!
我的代码来自TutorialsPoint
try {
String src = "student.xml";
File inputFile = new File(src);
SAXReader reader = new SAXReader();
Document doc = reader.read(inputFile);
System.out.println("Root element: "
+ doc.getRootElement().getName());
Element classElement = doc.getRootElement();
List<Node> nodes = doc.selectNodes("/Section/Student");
for (Node node : nodes){
System.out.println("First Name" + node.selectSingleNode("FirstName").getText());
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是我的XML文件
<?xml version = "1.0"?>
<Section>
<Student>
<Idnumber>0000001</Idnumber>
<FirstName>Cat</FirstName>
<LastName>Dog</LastName>
</Student>
</Section>
我在控制台中收到的错误如下:
Root element :Section
Exception in thread "main" java.lang.NoClassDefFoundError:org/jaxen/JaxenException
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 com.dls.csb.ParsingXML.main(ParsingXML.java:30)
答案 0 :(得分:0)
引用TutorialsPoint article on dom4j:
为了使用DOM4J解析器,您应该在应用程序的类路径中使用dom4j-1.6.1.jar和jaxen.jar。
显然你的类路径中没有jaxen jar。如果你有dom4j-1.6.1.zip存档,你可以在lib
文件夹中找到一个jaxen jar。
我拿了你的代码并在类路径上使用jaxen jar运行它并成功运行。你的代码似乎正在做你想要的,你只是没有完全依赖。
Jaxen是一个Java XPath库,行
中的文本/Section/Student
List<Node> nodes = doc.selectNodes("/Section/Student");
是一个XPath表达式,用于选择作为根Student
元素的子元素的所有Section
元素。