歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java獲取XML節點總結之讀取XML文檔節點

Java獲取XML節點總結之讀取XML文檔節點

日期:2017/3/1 9:11:37   编辑:Linux編程

dom4j是Java的XML API,用來讀寫XML文件的。目前有很多場景中使用dom4j來讀寫xml的。
要使用dom4j開發,需要下載導入dom4j相應的jar文件。
官網下載:http://www.dom4j.org/dom4j-1.6.1/
github下載:http://dom4j.github.io/
下載解壓之後如圖所示:

我們只需要把dom4j-1.6.1.jar文件構建到我們開發項目中就可以了。


下面就以Eclipse創建java項目的構建方法為例說明:
聲明:本Java項目的開發環境JDK1.8,Eclipse版本 Neon.1 Release (4.6.1)
首先創建一個demo項目:

在demo項目中創建一個lib文件,把dom4j-1.6.1.jar文件拷貝到lib中,然後右鍵dom4j-1.6.1jar文件。如圖所示:


點擊Add to Bulid Path即可構建到項目中去了。
導入成功如圖所示:

在項目開發的過程中可以參考docs文件夾的(幫助文檔),找到index.html打開,點擊Quick start可以通過幫助文檔進行學習 dom4j進行xml的解析。
如圖所示:


下面我將以詳細例子去介紹Java操作xml文件,文件名為exmple.java。

 1 package vastsum;
 2 
 3 import java.io.File;
 4 import java.util.Iterator;
 5 import java.util.List;
 6 
 7 import org.dom4j.Document;
 8 import org.dom4j.DocumentException;
 9 import org.dom4j.Element;
10 import org.dom4j.Node;
11 import org.dom4j.io.SAXReader;
12 
13 /**
14  * 讀取下xml文檔,獲得document對象。
15  * 本文為xml連載第一篇,以下代碼可以直接運行,結尾附上源碼下載地址。
16  */
17 class exmple {
18     public static void main(String[] args) throws DocumentException
19     {
20         SAXReader reader = new SAXReader();
21         Document document = reader.read(new File("./src/contact.xml"));
22         
23         /**
24          * 節點對象的操作方法
25          */
26         
27         //獲取文檔根節點
28         Element root = document.getRootElement();
29         //輸出根標簽的名字
30         System.out.println(root.getName());
31         
32         
33         //獲取根節點下面的所有子節點(不包過子節點的子節點)
34         List<Element> list = root.elements() ;
35         //遍歷List的方法
36         for (Element e:list){
37             System.out.println(e.getName());
38         }
39         
40         
41         //獲得指定節點下面的子節點
42         Element contactElem = root.element("contact");//首先要知道自己要操作的節點。 
43         List<Element> contactList = contactElem.elements();
44         for (Element e:contactList){
45             System.out.println(e.getName());
46         }    
47         
48         
49         //調用下面獲取子節點的遞歸函數。
50         getChildNodes(root);
51         
52         
53         //獲得當前標簽下指定名稱的第一個子標簽
54         Element conElem = root.element("contact");
55         System.out.println(conElem.getName());
56         
57         
58         //獲得更深層次的標簽(一層一層的獲取)
59         Element nameElem = root.element("contact").element("name");
60         System.out.println(nameElem.getName());
61     }
62     
63     //遞歸查詢節點函數,輸出節點名稱
64     private static void  getChildNodes(Element elem){
65         System.out.println(elem.getName());
66         Iterator<Node> it=    elem.nodeIterator();
67         while (it.hasNext()){
68             Node node = it.next();
69             if (node instanceof Element){
70                 Element e1 = (Element)node;
71                 getChildNodes(e1);
72                 }
73             
74             }
75         }
76     
77     
78 }

下面是對應的xml文件,文件名為contact.xml:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <contactList>
 3     <contact id="001" class="style">
 4         <name>張三</name>
 5         <age>20</age>
 6         <phone>134222223333</phone>
 7         <email>[email protected]</email>
 8         <qq>432221111</qq>
 9     </contact>
10     <contact id="002">
11         <name>李四</name>
12         <age>20</age>
13         <phone>134222225555</phone>
14         <email>[email protected]</email>
15         <qq>432222222</qq>
16     </contact>
17     <contactTwo>
18         <name>王五</name>
19         <age>32</age>
20         <phone>465431341</phone>
21         <emali>[email protected]</emali>
22         <qq>46164694</qq>
23     </contactTwo>
24     <test>測試</test>
25     <test>其他用途</test>
26 </contactList>

兩個文件的目錄如題所示:

Copyright © Linux教程網 All Rights Reserved