程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 在Java中使用xpath對xml解析,javaxpathxml解析

在Java中使用xpath對xml解析,javaxpathxml解析

編輯:JAVA綜合教程

在Java中使用xpath對xml解析,javaxpathxml解析


xpath是一門在xml文檔中查找信息的語言。xpath用於在XML文檔中通過元素和屬性進行導航。它的返回值可能是節點,節點集合,文本,以及節點和文本的混合等。
在學習本文檔之前應該對XML的節點,元素,屬性,文本,處理指令,注釋,根節點,命名空間以及節點關系有一定的了解以及對xpath也有了解。
XML學習地址:http://www.runoob.com/xml/xml-tutorial.html
xpath基本語法學習地址:http://www.runoob.com/xpath/xpath-tutorial.html
xpath官方文檔:https://yunpan.cn/cvc4tEIGy5EvS 訪問密碼 9d16
本文主要介紹:Java中使用xpath操作對xml操作。
1)首先在dom4j中如何使用xpath技術
導入xPath支持的jar包。jaxen-1.1-beta-6.jar(首先要先導入dom4j包,dom4j下載地址:http://www.dom4j.org/dom4j-1.6.1/)。

導包之後如圖所示:

如果不知道怎樣導包請參考我以前的一篇博客:Java獲取xml節點總結之讀取xml文檔節點
2)在Java中使用xpath方法,主要有兩點:
List<Node> selectNodes("xpath表達式"); 查詢多個節點對象
Node selectSingleNode("xpath表達式"); 查詢一個節點對象
下面就用實例說明使用方法。

一、selectNodes使用方法:

 1 package com.vastsum.demo;
 2 
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.util.List;
 6 
 7 import org.dom4j.Document;
 8 import org.dom4j.Element;
 9 import org.dom4j.Node;
10 import org.dom4j.io.OutputFormat;
11 import org.dom4j.io.SAXReader;
12 import org.dom4j.io.XMLWriter;
13 
14 /**
15  * 
16  * @author shutu008
17  *selectNode的使用方法
18  */
19 public class xpathDemo {
20 
21     public static void main(String[] args) throws Exception {
22 
23     Document doc = new SAXReader().read(new File("./src/contact.xml"));
24         
25         /**
26          * @param xpath 表示xpath語法變量
27          */
28     String xpath="";
29         
30         /**
31          * 1.      /      絕對路徑      表示從xml的根位置開始或子元素(一個層次結構)
32          */
33         xpath = "/contactList";
34         xpath = "/contactList/contact";
35         
36         /**
37          * 2. //     相對路徑       表示不分任何層次結構的選擇元素。
38          */
39         xpath = "//contact/name";
40         xpath = "//name";
41         
42         /**
43          * 3. *      通配符         表示匹配所有元素
44          */
45         xpath = "/contactList/*"; //根標簽contactList下的所有子標簽
46         xpath = "/contactList//*";//根標簽contactList下的所有標簽(不分層次結構)
47         
48         /**
49          * 4. []      條件           表示選擇什麼條件下的元素
50          */
51         //帶有id屬性的contact標簽
52         xpath = "//contact[@id]";
53         //第二個的contact標簽
54         xpath = "//contact[2]";
55         //選擇最後一個contact標簽
56         xpath = "//contact[last()]";
57         
58         /**
59          * 5. @     屬性            表示選擇屬性節點
60          */
61         xpath = "//@id"; //選擇id屬性節點對象,返回的是Attribute對象
62         xpath = "//contact[not(@id)]";//選擇不包含id屬性的contact標簽節點
63         xpath = "//contact[@id='002']";//選擇id屬性值為002的contact標簽
64         xpath = "//contact[@id='001' and @name='eric']";//選擇id屬性值為001,且name屬性為eric的contact標簽
65         
66         /**
67          *6.  text()   表示選擇文本內容
68          */
69         //選擇name標簽下的文本內容,返回Text對象
70         xpath = "//name/text()";
71         xpath = "//contact/name[text()='張三']";//選擇姓名為張三的name標簽
72         
73         
74         List<Node> list = doc.selectNodes(xpath);
75         for (Node node : list) {
76             System.out.println(node);
77         }
78     
79         //寫出xml文件
80         //輸出位置
81         FileOutputStream out = new FileOutputStream("d:/contact.xml");
82         
83         //指定格式
84         OutputFormat format = OutputFormat.createPrettyPrint();
85         format.setEncoding("utf-8");
86         XMLWriter writer = new XMLWriter(out,format);
87         
88         //寫出內容
89         writer.write(doc);
90         
91         //關閉資源
92         writer.close();
93         
94     }
95     
96 
97 }

二、selectSingleNode的使用方法

 1 package com.vastsum.demo;
 2 
 3 import java.io.File;
 4 import java.util.Iterator;
 5 
 6 import org.dom4j.Attribute;
 7 import org.dom4j.Document;
 8 import org.dom4j.Element;
 9 import org.dom4j.io.SAXReader;
10 
11 /**
12  * 
13  * @author shutu008
14  *selectSingleNode的使用
15  */
16  public class xpathDemo1{
17      public static void main(String[] args) throws Exception{
18          //讀取XML文件,獲得document對象
19         SAXReader saxReader = new SAXReader();    
20         Document doc = saxReader.read(new File("./src/contact.xml"));
21         
22         //使用xpath獲取某個節點
23         String xpath = "";
24         
25         //對contact元素 id="001"的節點,操作
26         xpath = "//contact[@id = '001']";
27         Element contactElem =    (Element)doc.selectSingleNode(xpath);
28         
29         //設置這個節點的屬性值
30         contactElem.addAttribute("name", "001");
31         
32         //輸出這個節點的所有屬性值
33         for(Iterator it = contactElem.attributeIterator();it.hasNext();){
34         Attribute conAttr = (Attribute)it.next();
35         String conTxt = conAttr.getValue();
36         String conAttrName = conAttr.getName();
37         System.out.println(conAttrName+" = "+conTxt);
38         }
39         
40      }
41  }

 備注:以下是操作的xml文件

1 <?xml version="1.0" encoding="UTF-8"?> 2 <contactList id="0"> 3 <contact id="001" class="style" name="lisi"> 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> View Code

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved