2015-04-04 58 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