XPath语法规则及实例
XPath語法規則及實例
XPath語法規則一、XPath術語:
1.節點:在XPath中,有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節點。
XML文檔是被作為節點樹來對待的。樹的根被稱為文檔節點或者根節點。
實例
1:XML文檔:
<?xml?version="1.0"?encoding="ISO-8859-1"?>?
<bookstore>?
<book>?
<title?lang="en">Harry?Potter</title>?
<author>J?K.?Rowling</author>?
<year>2005</year>?
<price>29.99</price>?
</book>?
</bookstore>?
上面的XML文檔中的節點例子:<bookstore>(文檔節點),<author>J?K.?Rowling</author>(元素節點),lang="en"(屬性節點)。
2.基本值(或稱原子值,Atomic?value)
基本值是無父或無子的節點。基本值的例子:在實例1的xml文檔中J?K.?Rowling、"en"?
3.項目(Item)項目是基本值或者節點。
4.節點的關系:
1)父節點(Parent):每個元素以及屬性都有一個父。在上面實例1的xml?文檔中,book?元素是?title、author、year?以及price?元素的父節點。
2)子節點(Children):元素節點可有零個、一個或多個子。在上面實例1的xml?文檔中,title、author、year?以及price?元素都是book?元素的子。
3)同胞(Sibling):擁有相同的父的節點,在上面實例1的xml?文檔中,title、author、year?以及price?元素都是同胞。
4)先輩(Ancestor)某節點的父、父的父,等等。在實例1的xml?文檔中,title?元素的先輩是book?元素和bookstore?元素。
5)后代(Descendant)某個節點的子,子的子,等等。在實例1的xml?文檔中,bookstore?的后代是book、title、author、year?以及price?元素。
?
二、XPath語法:
XPath?使用路徑表達式來選取XML?文檔中的節點或節點集。節點是通過沿著路徑(path)?或者步(steps)?來選取的。我們將在下面的例子中使用這個XML?文檔:
<?xml?version="1.0"?encoding="ISO-8859-1"?>?
<bookstore>?
<book>?
<title?lang="eng">Harry?Potter</title>?
<price>29.99</price>?
</book>? <book>?<title?lang="eng">Learning?XML</title>?
<price>39.95</price>?
</book>?
</bookstore>?
1.選取節點XPath?使用路徑表達式在XML?文檔中選取節點。節點是通過沿著路徑或者step?來選取的。下面列出了最有用的路徑表達式:
?表達式描述nodename?選取此節點的所有子節點。
實例:在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:
?2.謂語(Predicates)
?謂語用來查找某個特定的節點或者包含某個指定的值的節點,謂語被嵌在方括號中。
?實例:在下面的表格中,我們列出了帶有謂語的一些路徑表達式,以及表達式的結果:
3.選取未知節點XPath
?通配符可用來選取未知的?XML?元素。
?
實例:在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:
?4.選取若干路徑
?通過在路徑表達式中使用“|”運算符,您可以選取若干個路徑。
?實例:在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:
?
三、XPath?Axes(坐標軸)我們將在下面的例子中使用此XML?文檔:
1.XPath?軸
軸可定義相對于當前節點的節點集。
2.位置路徑表達式
?位置路徑可以是絕對的,也可以是相對的。絕對路徑起始于正斜杠(?/?),而相對路徑不會這樣。在兩種情況中,位置路徑均包括一個或多個步,每個步均被斜杠分割:
?絕對位置路徑:/step/step/...?
?相對位置路徑:step/step/...?
?每個步均根據當前節點集之中的節點來進行計算。
3.步(step)包括:
軸(axis):定義所選節點與當前節點之間的樹關系。
節點測試(node-test):識別某個軸內部的節點。
零個或者更多謂語(predicate):更深入地提煉所選的節點集。
步的語法:軸名稱::節點測試[謂語]。
實例:
4.常用函數:
last()??節點數組的最后一個
position()?下標索引,從1開始
text()? ? 節點的文本內容
contains(@attr,?'value')?????模糊匹配
starts-with(@attr,?'value')??是否以指定字符開頭
count(@attr)??????匹配次數
string-length()???????返回字符串的字符數,你應該用<替代<,?用>代替>?
normalize-space()????函數刪除了前部和尾部的空格,?并且把連續的空格串替換為一個單一的空格
四、XPath?運算符:?
五、XPath?實例
實例一
?
?
?
?
文章來源于:https://wenku.baidu.com/view/64d6c115f18583d0496459e0.html
?
轉載于:https://www.cnblogs.com/jingdenghuakai/p/11078780.html
總結
以上是生活随笔為你收集整理的XPath语法规则及实例的全部內容,希望文章能夠幫你解決所遇到的問題。