XPath解析詳解

一、XPath基本語法

1、XPath起步步驟

XPath是通過路徑表達式來選取XML文檔中的節點或節點集的,XPath有7種基本的路徑表達式,包括節點選擇、屬性選擇、位置選擇、邏輯運算符、數值運算符、字元串函數、數值函數等。

// 代表選擇根節點
/ 代表選擇根節點下的直接子節點
descendant:: 選取從當前節點開始所有子孫節點
.. 選取當前節點的父節點
@ 選取某個屬性的值
例子:
//bookstore/book[1]:選取第一個book元素節點

2、XPath運算符

XPath運算符主要包括節點比較運算、字元串比較運算、邏輯運算、數值運算等。

節點比較運算:
=, !=, <, , >=
字元串比較運算:
=, !=, <, , >=, contains()
邏輯運算:
and, or, not
數值運算:
+, -, *, div, mod
例子:
//bookstore/book[price>35.00]: 選取bookstore下的所有book元素節點中,price大於35.00的節點。

二、XPath選取節點

1、XPath選取節點類型

XPath中節點類型主要包括元素節點、屬性節點、文本節點、命名空間節點等。

選取元素節點:
//+元素名:選取所有該元素名的節點
/ 子節點:選取該節點的直接子節點
選取屬性節點:
//@屬性名:選取該屬性名的所有屬性節點

2、XPath謂語的使用

謂語是用來限定查找範圍的,一般包含在[]之中,可以使用一些運算符和函數對選取的節點作出進一步的限制。

例如://*[@lang='cn']:選取lang屬性為cn的所有元素節點。

三、XPath選取文本節點

1、XPath選取文本節點的方法

XPath選取文本節點主要通過text()函數實現。

例如://bookstore/book[3]/title/text():選取bookstore下的第3個book元素節點的title子節點的文本值。

2、XPath選取多個文本節點的方法

XPath選取多個文本節點的方法主要是通過使用|運算符實現。

例如://bookstore/book/title | //bookstore/book/author:選取bookstore下的所有book元素節點的title和author子節點的文本值。

四、XPath選取節點屬性

1、XPath選取屬性節點的方法

XPath選取屬性節點主要是通過使用@屬性名的形式實現。

例如://bookstore/book[1]/@category:選取bookstore下的第1個book元素節點的category屬性值。

2、XPath選取多個屬性節點的方法

與選取多個文本節點類似,XPath選取多個屬性節點的方法主要是通過使用|運算符實現。

例如://bookstore/book[@lang='en' or @lang='cn']/@category | //bookstore/book/title:選取lang屬性為en或cn的所有book元素節點的category屬性值和所有title子節點的文本值。

五、XPath函數

1、XPath函數的定義

XPath函數是用來處理查找結果和其他值得函數,通過函數名和參數列表調用,可以將結果進一步加工和處理。

常用的函數有:
count(), sum(), concat(), substring(), contains(), floor(), round()等。
例如:count(//bookstore/book):選取bookstore下的所有book元素節點的數量。

2、XPath函數與運算符的聯合使用

XPath函數和運算符的聯合使用可以實現更加強大的功能,例如查找某一類型的節點中特定的文本值等。

例如://bookstore/book[contains(title, 'Harry Potter')]/price:選取title中包含Harry Potter的所有book元素節點的price子節點的文本內容。

六、XPath軸

1、XPath軸的介紹

XPath軸是一組預定義的節點集合,包括了當前節點、父節點、子節點和兄弟節點等,在XPath中使用軸可以對節點進行更加靈活的定位。

常用的軸有:
self, parent, child, descendant, following-sibling, preceding-sibling等。

2、XPath軸的語法

XPath軸的語法是在選取節點時添加軸名稱和分隔符「::」,例如:axis::nodetype。

例如:ancestor::book:選取當前節點的祖先節點中所有book元素節點。

七、XPath運用場景和注意事項

1、XPath的運用場景

XPath可以用於處理XML數據和HTML數據,便於對數據進行定位和提取,廣泛應用於Web數據挖掘、自然語言處理等領域。

2、XPath的注意事項

在XPath使用過程中需要注意元素和屬性的大小寫區分問題,避免出現錯誤。

同時,XPath路徑表達式不應該過於冗長,否則會降低執行效率,應該結合具體情況進行優化。

八、代碼示例

Example

原創文章,作者:BFDMY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331587.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BFDMY的頭像BFDMY
上一篇 2025-01-20 14:10
下一篇 2025-01-20 14:10

相關推薦

  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25

發表回復

登錄後才能評論