xpath語法及操作


firefox瀏覽器安裝xpath checker插件

xpath是一門在xml文檔中查找信息的語言,用於在XML文檔中通過元素和屬性進行導航

1.xpath 術語

1.1節點:元素、屬性、文本、命名空間、處理命令、注釋以及文檔(根)節點

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>(文檔結點--根節點)

         <book>

           <title lang="en">Harry Potter</title>(lang="en"--屬性節點)

           <author>J K. Rowling</author> (--元素節點)

           <year>2005</year>

           <price>29.99</price>

         </book>

</bookstore>

J K. Rowling,en基本值,基本值是無父或無子的節點

節點關系:

父(parent)每個元素以及屬性都有一個父

子(childrenn)元素節點可有0個,1個或多個子節點

同胞節點(sibling)擁有相同的父的節點

先輩(ancestor)某節點的父,父的父...

后代(descendant)

2.選取節點

/--從根節點選取

//--從匹配選擇的當前節點選擇文檔中的節點,而不考慮他們的位置

.--選取當前節點

..--選取當前節點的父節點

@--選取屬性

 

練習demo.xml文件

1.選取 書店里 所有書的詳細信息

/bookstore

2.選取 所有書的標題,所有書的分類簽

/bookstore/book/title

 

3.選取 第一本書的定價

/bookstore/book[1]/price/text()

選取所有價格

/bookstore/book/price/text()

選取價格高於 35 的 price 節點

/bookstore/book[price>35.00]/price

4.選取 最后一本書的作者

/bookstore/book[last()]/author/text()

5.選取 倒數第二本書的 分類標簽

/bookstore/book[last()-1]/@category

6.選取 包含cover屬性的書的標題

/bookstore/book[@cover]/title/text()

7.選取 定價高於35的書的標題

/bookstore/book[price>35.00]/title

8.選取 定價在30到40之間的書的標題

/bookstore/book[price>35.00 and price<40.00]/title

/bookstore/book[price>35.00 and price<40.00]/title/text()

9.選取 作者多於一個的書的標題

/bookstore/book[count(author)>1]/title

10.選取 作者多於一個的書 只列出所有作者名

/bookstore/book[count(author)>1]/author/text()

11.選取 分類不是web 且價格低於40的書的分類屬性值

/bookstore/book[@category!='web' and price<40.00]

12.選取 標題名稱包含X的 所有書的定價值

/bookstore/book[title[contains(text(),'X')]]/price/text()

 

總結:

查詢對象,層層找

一個元素是一個單獨的個體,它有屬性,有內容值

一個/是絕對路徑,從根元素開始

兩個//是相對路徑,遞歸查找所有子孫

一個. 是當前層,兩個.是上一層

@表示取屬性

*叫通配符,表示任意

[]叫謂語,里面跟的是查詢條件

條件支持算數運算+-*/><,條件支持邏輯運算 and or

取文本值用text(),不加@因為它是個函數

常用函數就幾個,contains是包含,寫法是括號加兩個入參

                      text()是取文本值,也可以當做一個查詢條件

                      last()取末尾,倒數第二last()-1

                      starts-with(),表示以XX開頭,寫法是括號加兩個入參

                      not(),表示否定,把內容全包進去

                      count

1.選取 book下所有 后代節點的text值 (提示:用通配符*)

/bookstore/book/@*

2.選取 單個作者 且 分類是web的書的出版年份值

/bookstore/book[count(author)=1 and @category='web']/year/text()

3.選取 單個作者 且 定價大於30的書的分類簽

/bookstore/book[count(author)=1 and price>30]/@category

4.選取 多個作者 且 標題是以X開頭的 書的定價

/bookstore/book[count(author)>1 and contains(title,'X')]/price/text()

5.選取 分類是web 且作者不包括James的所有書的標題

/bookstore/book[@category='web' and not(contains(author,'James'))]/title/text()

https://xinbao.sinosig.com/

//div[@id='navBar']/div[@class='jumbotron']/nav[@class='navbar navbar-default']/div[@class='container paddinglr15']/ul[@class='nav navbar-nav navbar-right']/li[contains(a,'解決方案')]/ul[@class='nav-two navbar-nav-lev2']/li/a/span[@class='titleStyle']

//input[@id='identifyNumber']

//select[@id='identifyType']


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM