日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XPath表达式

發布時間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XPath表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是XPath

XPath:路徑表達式

作用:在DOM解析XML時,通過XPath表達讓解析更加簡單

XPath表達式分類

  • 絕對路徑
  • 相對路徑
  • 全文搜索
  • 屬性查找
  • 什么是Node對象

    DOM樹中的每個節點就是Node

    dom4j中與XPath相關的方法

    注:使用XPath需要另外導入 jaxen-1.1.2.jar包

    Node對象的方法功能說明
    Node selectSingleNode(String xpath)通過xpath得到一個節點
    List selectNodes(String xpath)通過xpath得到一組節點

    XPath:絕對路徑和相對路徑

    目標

  • 學習XPath絕對路徑的使用
  • 學習XPath相對路徑的使用
  • 絕對路徑語法

    絕對路徑示例

    需求

    采用絕對路徑獲取從根節點開始逐層的查找/contactList/contact/name 節點列表并打印信息

    步驟

  • 創建 XML 解析器,讀取 XML 文檔并獲得Document對象
  • 定義 Xpath 表達式:/contactList/contact/name
  • 調用Document對象的selectNodes()方法執行Xpath獲得節點集合
  • 遍歷輸出每個節點
  • 代碼

    public class Demo7Xpath {private Document document;//在每個測試方法之前執行的方法@Beforepublic void init() throws DocumentException {//1. 得到SaxReaderSAXReader reader = new SAXReader();//2. 得到文檔對象document = reader.read(Demo7Xpath.class.getResourceAsStream("/Contact.xml"));}/**使用絕對路徑*/@Testpublic void testAbsolute() {String xpath = "/contactList/contact/name";//得到所有name元素List<Node> nodeList = document.selectNodes(xpath);for (Node node : nodeList) {System.out.println(node.getText());}} }

    相對路徑的語法

    相對路徑的示例

    需求

  • 先采用絕對路徑獲取 contactList 節點
  • 再采用相對路徑獲取下一級contact 節點的name子節點并打印信息。
  • 步驟

  • 定義 Xpath 表達式:/contactList
  • 調用Document對象的 selectSingleNode 方法執行Xpath獲得根節點對象
  • 通過根節點對象調用selectNodes方法執行相對路徑表達式:./contact/name
  • 打印輸出所有的節點
  • 代碼

    /**使用相對路徑*/ @Test public void testRelative() {//通過絕對路徑得到/contactListNode node = document.selectSingleNode("/contactList");//通過相對路徑得到nameNode nameNode = node.selectSingleNode("./contact/name");System.out.println(nameNode.getText()); }

    XPath:全文搜索和屬性查找

    目標

  • 學習XPath全文搜索的使用

  • 學習XPath屬性查找的使用

  • 舉例

    舉例說明
    //contact找contact元素,無論元素在哪里
    //contact/name找contact,無論在哪一級,但name一定是contact的子節點
    //contact//namecontact無論在哪一種,name只要是contact的子孫元素都可以找到

    全文搜索示例

    需求

    直接全文搜索所有的 name元素并打印

    步驟

  • 創建Xpath表達式 //name
  • 使用selectNodes()方法查詢所有的name節點
  • 代碼

    /**全文搜索*/ @Test public void testGlobalSearch() {List<Node> nodes = document.selectNodes("//name");for (Node node : nodes) {System.out.println(node.getText());} }

    屬性查找語法

    屬性查找的示例

  • 查找所有id屬性節點
  • 查找包括id屬性的contact元素
  • 查找包括id屬性且屬性名為的contact元素
  • 步驟

  • 創建Xpath表達式
  • 使用selectNodes()方法查詢所有的節點
  • 代碼

    /**屬性查找*/ @Test public void testAttributeFind() {//1. 查找所有id屬性節點/*List<Node> nodes = document.selectNodes("//@id");//是屬性對象Attributefor (Node node : nodes) {//輸出屬性值Attribute a = (Attribute) node;System.out.println("屬性值:" + a.getValue());}*///2. 查找包括id屬性的contact元素/*List<Node> nodeList = document.selectNodes("//contact[@id]");for (Node node : nodeList) {System.out.println(node.getName());}*///3. 查找包括id屬性且屬性名為的contact元素Node node = document.selectSingleNode("//contact[@id=2]");System.out.println(node.getName()); }

    總結

    以上是生活随笔為你收集整理的XPath表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。