XPath 語法筆記

XPath 語法筆記

  • XPath 表達式
  • 運算符
  • 謂語(Predicates)
    • 1. 選擇所有本地名稱為特定名稱的元素
    • 2. 選擇具有特定屬性的元素
    • 3. 選擇屬性值不等于特定值的元素
    • 4. 選擇元素內容中包含特定字符串的節點
    • 5. 選擇元素內容中不包含特定字符串的節點
    • 6. 選擇特定命名空間內的元素
    • 7. 選擇元素的屬性
    • 8. 選擇元素的所有屬性
    • 9. 選擇所有子孫元素
    • 10. 選擇當前節點的父節點
  • 參考資料

XPath 表達式

  • 當使用命名空間時,確保在XPath引擎中正確聲明命名空間的前綴和URI。
表達式說明
nodename選擇 nodename 節點的所有子節點
/單斜杠表示絕對路徑。它總是從XML文檔的根節點開始
//雙斜杠表示任意深度的后代路徑
.代表當前節點
..代表當前節點的父節點
*匹配任意節點
//*當前文檔的所有元素(任意深度 + 任意節點)
@*選擇所有屬性。 放在[@*]中,表示帶任何屬性
local-name()使用此函數時,XPath會忽略命名空間,只考慮元素的本地名稱
[]謂語(Predicates)[]用于填寫匹配條件

運算符

下面是XPath支持的運算符及其說明和示例的表格:

運算符說明舉例
=等于比較price = 10
!=不等于比較price != 10
<小于比較year < 2000
<=小于等于比較year <= 2000
>大于比較quantity > 5
>=大于等于比較quantity >= 5
+加法運算sum + 10
-減法運算total - sum
*乘法運算width * height
divXPath 2.0 開始 除法運算4 div 2
mod取模運算10 mod 3
and邏輯與status = 'active' and year > 2000
or邏輯或status = 'active' or status = 'pending'
union集合并集set1 union set2
|節點集并集nodeList1 | nodeList2
?XPath 3.0 引入的序列類型測試xs:int() ? 1

注意:? 運算符是XPath 3.0及更高版本引入的,用于序列類型測試,不適用于所有XPath版本。在實際使用中,應根據XPath版本選擇適用的運算符。

謂語(Predicates)

方括號中的謂語可以是任何表達式,只要它能返回一個布爾值。這可以是屬性測試、位置測試或任何其他邏輯表達式。

  • 過濾節點集合。
  • 檢索滿足特定條件的節點。
  • 訪問節點的屬性或計算表達式的值。

例如:

  • book[price > 30] 選擇所有price屬性大于30的book元素。
  • */chapter[title='Introduction'] 選擇所有子元素中標題為"Introduction"的chapter元素。

1. 選擇所有本地名稱為特定名稱的元素

  • 表達式: //*[local-name()='elementName']
  • 示例: 若要選擇所有本地名稱為sym的元素,可以使用
    .//*[local-name()='sym']
    

2. 選擇具有特定屬性的元素

  • 表達式: //*[local-name()='elementName' and @attributeName='value']
  • 示例: 若要選擇所有本地名稱為symw:font屬性值為"Arial"的元素,可以使用
    .//*[local-name()='sym' and @w:font='Arial']
    
    選取所有帶有屬性的 sym元素。
    .//*[local-name()='sym' and @*]
    

3. 選擇屬性值不等于特定值的元素

  • 表達式: //*[local-name()='elementName'][not(@attributeName='value')]
  • 示例: 若要選擇所有本地名稱為symw:font屬性值不為"Arial"的元素,可以使用
    .//*[local-name()='sym'][not(@w:font='Arial')]
    

4. 選擇元素內容中包含特定字符串的節點

  • 表達式: //*[contains(text(), 'string')]
  • 示例: 若要選擇所有內容中包含單詞example的段落,可以使用
    //p[contains(text(), 'example')]
    

5. 選擇元素內容中不包含特定字符串的節點

  • 表達式: //*[not(contains(text(), 'string'))]
  • 示例: 若要選擇所有內容中不包含單詞example的段落,可以使用
    //p[not(contains(text(), 'example'))]
    

6. 選擇特定命名空間內的元素

  • 表達式: //namespace:elementName
  • 示例: 若要選擇http://schemas.openxmlformats.org/wordprocessingml/2006/main命名空間下的所有sym元素,可以使用(其中w命名空間必須在XPath引擎中被正確聲明。)
    //w:sym
    

7. 選擇元素的屬性

  • 表達式: //*[local-name()='elementName']/@attributeName
  • 示例: 若要選擇所有sym元素的w:char屬性,可以使用
    .//*[local-name()='sym']/@w:char
    

8. 選擇元素的所有屬性

  • 表達式: //*[local-name()='elementName']/@*
  • 示例: 若要選擇所有sym元素的所有屬性,可以使用
    .//*[local-name()='sym']/@*
    

9. 選擇所有子孫元素

  • 表達式: //elementName
  • 示例: 若要選擇文檔中所有的p元素,無論它們處于哪個層級,可以使用
    //p
    

10. 選擇當前節點的父節點

  • 表達式: ..
  • 示例: 如果當前節點是<p>...</p>,那么..將指向包含它的父節點。
    ..
    

參考資料

XPath 1.0 規范: https://www.w3.org/TR/xpath/
XPath 2.0 規范: https://www.w3.org/TR/xpath-20/
XPath 3.1 規范: https://www.w3.org/TR/xpath-31/

菜鳥教程 XPath 參考手冊 - 語法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41934.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41934.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41934.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一臺docker機器如何實現構建多平臺鏡像

1.實現方式 想在 x86_64/amd64 的一臺機器平臺上&#xff0c;構建適用于多個平臺的鏡像&#xff0c;例如 linux/amd64、linux/arm64&#xff0c;根據官方文檔&#xff0c;有三種方法可以使用&#xff1a; QEMU ??使用 QEMU 模擬構建多平臺映像是最簡單的入門方法&#xff0c…

前端面試題13(API請求方法)

在前端JavaScript中&#xff0c;進行API請求主要可以通過幾種方式來實現&#xff0c;最常見的是使用XMLHttpRequest&#xff08;較舊的方法&#xff09;、fetch&#xff08;現代瀏覽器推薦方法&#xff09;以及使用第三方庫如axios或jQuery.ajax等。 1. XMLHttpRequest 這是最…

仙人掌中的SNMP檢測不到服務器

登錄有問題的服務器1.檢測snmp localhost:~ # ps -ef|grep snmp root 55180 1 0 08:37 ? 00:00:08 /usr/sbin/snmpd -r -A -LF n /var/log/net-snmpd.log -p /var/run/snmpd.pid root 58436 53989 0 09:44 pts/0 00:00:00 grep --colorauto snmp2.檢測…

linux 編譯perf 工具

centos7下編譯步驟&#xff1a; wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.10.tar.gz tar -xf linux-3.10.tar.gz cd linux-3.10/tools/ yum install -y flex bison python2-devel make perf ./perf/perf top -d 1…

昇思第10天

RNN實現情感分類 二分類問題&#xff1a;Positive和Negative兩類 步驟&#xff1a; 1.加載IMDB數據集 2.加載預訓練詞向量:預訓練詞向量是對輸入單詞的數值化表示&#xff0c;通過nn.Embedding層&#xff0c;采用查表的方式&#xff0c;輸入單詞對應詞表中的index&#xff0c;…

【算法專題】模擬算法題

模擬算法題往往不涉及復雜的數據結構或算法&#xff0c;而是側重于對特定情景的代碼實現&#xff0c;關鍵在于理解題目所描述的情境&#xff0c;并能夠將其轉化為代碼邏輯。所以我們在處理這種類型的題目時&#xff0c;最好要現在演草紙上把情況理清楚&#xff0c;再動手編寫代…

FreeRTOS——隊列集

一、隊列集 一個隊列只允許任務間傳遞的消息為 同一種數據類型 &#xff0c;如果需要在任務間 傳遞不同數據類型的消息 時&#xff0c;那么就可以使用隊列集 作用&#xff1a;用于對多個隊列或信號量進行“監聽”&#xff08;接收或獲取&#xff09;&#xff0c;其中 不管哪一…

js 使用 lodash-es 檢測某個值是否是函數

import { isFunction } from lodash-eslet isA isFunction(() > {}) console.log(isA) //true https://www.lodashjs.com/docs/lodash.isFunction#_isfunctionvalue https://lodash.com/docs/4.17.15#isFunction 人工智能學習網站 https://chat.xutongbao.top

Spring框架配置進階_自動裝配(XML和注解)

Spring配置進階 Spring 容器提供配置元數據有三種方式 XML配置文件。基于注解的配置。基于java的配置。 一、自動裝配 應用程序上下文為你找出依賴項的過程,Spring會在上下文中自動查找&#xff0c;并自動給bean裝配與其關聯的屬性 Spring中實現自動裝配的方式有兩種: XML文…

26-ARM常用匯編指令

匯編格式&#xff1a; label&#xff1a;instruction comment label&#xff1a;標號instruction&#xff1a;具體匯編指令comment&#xff1a;注釋內容 常用段名&#xff1a; .text&#xff1a;代碼段.data&#xff1a;初始化的數據段.bss&#xff1a;未初始化的數據段.ro…

Spring Boot+Vue項目從零入手

Spring BootVue項目從零入手 一、前期準備 在搭建spring bootvue項目前&#xff0c;我們首先要準備好開發環境&#xff0c;所需相關環境和軟件如下&#xff1a; 1、node.js 檢測安裝成功的方法&#xff1a;node -v 2、vue 檢測安裝成功的方法&#xff1a;vue -V 3、Visu…

JSP WEB開發(一) JSP語言基礎

目錄 JSP JSP簡介&#xff1a; JSP頁面 JSP運行原理 JSP腳本元素 JAVA程序片 局部變量 全局變量和方法的聲明 全局變量 方法的聲明 程序片執行特點 synchronized關鍵字 表達式 JSP指令標記 page指令 include指令 JSP動作標記 JSP動作元素include和include指令的…

Docker在人工智能領域的應用與實戰

摘要 人工智能&#xff08;AI&#xff09;技術的快速發展帶來了對高效開發和部署工具的需求。Docker作為一個創新的容器化平臺&#xff0c;為AI領域提供了強大的支持。本文詳細介紹了Docker在AI模型開發、訓練、部署以及服務器集群管理等方面的應用&#xff0c;并探討了其在數…

AcWing 1550:完全二叉搜索樹

【題目來源】https://www.acwing.com/problem/content/1552/【題目描述】二叉搜索樹 (BST) 遞歸定義為具有以下屬性的二叉樹&#xff1a; &#xff08;1&#xff09;若它的左子樹不空&#xff0c;則左子樹上所有結點的值均小于它的根結點的值 &#xff08;2&#xff09;若它的右…

大數據平臺之數據同步

數據同步也成為CDC (Chanage Data Capture) 。Change Data Capture (CDC) 是一種用于跟蹤和捕獲數據庫中數據變更的技術&#xff0c;它可以在數據發生變化時實時地將這些變更捕獲并傳遞到下游系統。以下是一些常用的開源 CDC 方案&#xff1a; 1. Flink CDC Flink CDC 是基于 …

快速上手LangChain:構建強大的語言模型應用

引言 在人工智能和自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;構建高效且強大的語言模型應用變得越來越重要。LangChain 是一個專為開發者設計的框架&#xff0c;它簡化了語言模型應用的構建流程。本文將詳細介紹LangChain的功能和使用方法&#xff0c;幫助讀者…

76 4G模組 境外撥號入網注意

1 引言 最近朋友把國內的設備拿到新加坡了&#xff0c;然后發現原本國內可以使用的設備無法在異國他鄉聯網&#xff0c;所以就叫我來看看&#xff0c;發現是附網返回狀態、入網APN發生了改變導致的。另外&#xff0c;如果在境外使用國產4G模組撥號入網&#xff0c;也需要關注4G…

Windows安裝超好用的截圖工具——Snipaste

1、下載 官網&#xff1a;https://zh.snipaste.com/ 2、安裝 &#xff08;1&#xff09;解壓下載的壓縮包 &#xff08;2&#xff09;選中Snipaste.exe文件&#xff0c;右鍵發送到 -- > 桌面快捷方式 &#xff08;3&#xff09;雙擊桌面Snipaste圖標&#xff0c;桌面右下…

linux 服務器數據備份 和 mysql 數據遷移

查看域名ip 查看程序所處文件位置 list open files 1、 lsof -i :port 查看端口獲取進程 pid 2、lsof -i pid 1、scp 下載服務器文件到本地 security copy protocol 2、導出服務器 mysql 數據庫&#xff08;表&#xff09;到本地 mysqldump是MySQL自帶的一個實用程序&…

解析Java中1000個常用類:Date類,你學會了嗎?

在線工具站 推薦一個程序員在線工具站:程序員常用工具(http://cxytools.com),有時間戳、JSON格式化、文本對比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序員資料站 推薦一個程序員編程資料站:程序員的成長之路(http://cxyroad.com),收錄了一些列的技術教程…