2015-04-04 46 views
0

我刚刚开始学习JAVA xml = DOM4J这是基于TutorialsPoint的解析xml代码更加灵活。所以我着重于更多地了解DOM4J,因为与DOM解析器和JDOM相比,它的编码较少。无法打印给定节点的输出。根元素只能打印

我在打印节点的输出时遇到问题。任何帮助将不胜感激!请耐心等待,因为我仍然在学习如何使用它并更熟悉它。为了更好的理解,请简单地解释一下如何正确执行它。谢谢!从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

您是否在服务器上部署应用程序? – 2015-04-04 17:05:14

回答

0

要报价为TutorialsPoint article on dom4j

为了使用DOM4J解析器,应该在应用程序的类路径中包含dom4j-1.6.1.jar和jaxen.jar。

很明显,你的类路径中没有jaxen jar。如果您有dom4j-1.6.1.zip压缩文件,您可以在lib文件夹中找到jaxen jar。

我把你的代码运行在classpath上的jaxen jar中,并且它运行成功。你的代码似乎在做你想做的事情,你只是不完全拥有所有的依赖关系。

Jaxen的是一个Java的XPath库和线

 List<Node> nodes = doc.selectNodes("/Section/Student"); 

内的文本/Section/Student是XPath表达式选择所有Student元素是根Section元素的子元素。

+0

谢谢!在我到达这里之前我已经想清楚了。我忘了添加jaxen.jar,我只有dom4j jar。我也有一个问题,其他jar文件呢?不必要? – user3323654 2015-04-05 14:22:36

+0

@ user3323654:这取决于你想要做什么。其他JAR似乎包含用于验证XML模式或Relax NG的功能,如果您没有执行这两项任务,那么您将不需要这些JAR。目前,不要将任何其他JAR添加到类路径中。如果您稍后遇到NoClassDefFoundError,请通过这些JAR进行搜索,看看其中一个是否包含JVM抱怨无法找到的类,如果是,请将该JAR添加到类路径中。 – 2015-04-05 15:57:28

+0

非常感谢!祝你有美好的一天 :) – user3323654 2015-04-06 06:27:01