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