您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹什么是XPath技術 ,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
XPath即為XML路徑語言,它是一種用來確定XML(標準通用標記語言的子集)文檔中某部分位置的語言。XPath基于XML的樹狀結構,提供在數據結構樹中找尋節點的能力。起初 XPath 的提出的初衷是將其作為一個通用的、介于XPointer與XSLT間的語法模型。但是 XPath 很快的被開發者采用來當作小型查詢語言。
PS:其配合DOM4J解析技術,彌補了DOM4J不能跨層取元素的缺點。需要引入jaxen-1.1-beta-6.jar包。
XPath就好比SQL查詢語句,能夠對DOM樹進行查詢操作,并獲取相應結果。
XML9.xml
<?xml version="1.0" encoding="utf-8"?> <AAA> <BBB id="b1">Hello World B1</BBB> <CCC id="c1"/> <BBB id="b2">Hello World B2</BBB> <BBB>Hello World B3</BBB> <DDD> <BBB id="b3">Hello World B4</BBB> </DDD> <CCC> <DDD> <BBB id="b4"/> <BBB id="b5"/> </DDD> </CCC> </AAA>
package com.pc; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * * @author Switch * @function DOM4j配合xpath * */ public class XML9 { public static void main(String[] args) throws Exception { // 1.得到SAXReader解析器 SAXReader saxReader = new SAXReader(); // 2.指定解析哪個文件 Document document = saxReader.read("src/com/pc/XML9.xml"); // 3.使用XPath隨意讀取任何一層的元素 // document.selectNodes(); //返回多個元素 // document.selectSingleNode(); // 返回一個元素 // 取出AAA下面的所有BBB 3個 // List nodeList = document.selectNodes("/AAA/BBB"); // 取出所有的BBB 6個 // List nodeList = document.selectNodes("//BBB"); // System.out.println(nodeList.size()); // 取出AAA下面的DDD下面的最后一個BBB元素的內容 Hello World B4 // List nodeList = document.selectNodes("/AAA/DDD//BBB[last()]"); // System.out.println(((Element)nodeList.get(0)).getTextTrim()); // 取出AAA下面的CCC下面的DDD下面的所有元素 2個 // List nodeList = document.selectNodes("/AAA/CCC/DDD/*"); // 取出所有有三個祖先元素的BBB元素 // List nodeList = document.selectNodes("/*/*/*/BBB"); // System.out.println(nodeList.size()); // 取出AAA下面的第一個BBB元素的內容 Hello World B1 // List nodeList = document.selectNodes("/AAA/BBB[1]"); // System.out.println(((Element)nodeList.get(0)).getTextTrim()); // Element element = (Element) document.selectSingleNode("/AAA/BBB[1]"); // System.out.println(element.getTextTrim()); // 取出所有有id屬性的元素的id屬性 5個 // List nodeList = document.selectNodes("//@id"); // System.out.println(nodeList.size()); // 取出第一個有id屬性的元素的id屬性的值 b1 // System.out.println(((Attribute)nodeList.get(0)).getText()); // 取出所有有id屬性的CCC元素 // List nodeList = document.selectNodes("//CCC[@id]"); // System.out.println(nodeList.size()); // "//BBB[@*]" 選擇有任意屬性的BBB元素 // "//BBB[not(@*)]" 選擇沒有屬性的BBB元素 // "//BBB[@id='b1']" 選擇含有屬性id且其值為'b1'的BBB元素 // 選擇含有屬性id且其值(在用normalize-space函數去掉前后空格后)為'b2'的BBB元素 // "//BBB[normalize-space(@id)='b2']" // "//*[count(BBB)=2]" 選擇含有2個BBB子元素的元素 // "//*[name()='BBB']" 選擇所有名稱為BBB的元素(這里等價于//BBB) // "//*[starts-with(name(),'B')]" 選擇所有名稱以"B"起始的元素 // "//*[contains(name(),'C')]" 選擇所有名稱包含"C"的元素 // "//*[string-length(name()) = 3]" 選擇名字長度為3的元素 // "//*[string-length(name()) < 4]" 選擇名字長度小于3的元素 // 同樣的將<替換成大于號則是大于 // 11個 // List nodeList = document.selectNodes("//*[string-length(name()) < 4]"); // System.out.println(nodeList.size()); // "//CCC | //BBB" 選擇所有的CCC和BBB元素 } }
關于什么是XPath技術 就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。