XML中的XPath是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)魚峰,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
XPath 是一門在 XML 文檔中查找信息的語言。XPath 用于在 XML 文檔中通過元素和屬性進(jìn)行導(dǎo)航。
XPath 使用路徑表達(dá)式在 XML 文檔中進(jìn)行導(dǎo)航
XPath 包含一個標(biāo)準(zhǔn)函數(shù)庫
XPath 是 XSLT 中的主要元素
XPath 是一個 W3C 標(biāo)準(zhǔn)
XPath 使用路徑表達(dá)式來選取 XML 文檔中的節(jié)點或者節(jié)點集。這些路徑表達(dá)式和我們在常規(guī)的電腦文件系統(tǒng)中看到的表達(dá)式非常相似。
XPath 含有超過 100 個內(nèi)建的函數(shù)。這些函數(shù)用于字符串值、數(shù)值,日期和時間比較、節(jié)點和 QName 處理、序列處理、邏輯值等等。
在 XPath 中,有七種類型的節(jié)點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔節(jié)點(或成為根節(jié)點)。
在 XPath 中,有七種類型的節(jié)點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節(jié)點。XML 文檔是被作為節(jié)點樹來對待的。樹的根被稱為文檔節(jié)點或者根節(jié)點。
請看下面這個 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é)點例子:
<bookstore> (文檔節(jié)點) <author>J K. Rowling</author> (元素節(jié)點) lang="en" (屬性節(jié)點)
基本值是無父或無子的節(jié)點。
基本值的例子:
J K. Rowling "en"
項目是基本值或者節(jié)點。
每個元素以及屬性都有一個父。
在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:
<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
元素節(jié)點可有零個、一個或多個子。
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:
<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
擁有相同的父的節(jié)點
在下面的例子中,title、author、year 以及 price 元素都是同胞:
<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
某節(jié)點的父、父的父,等等。
在下面的例子中,title 元素的先輩是 book 元素和 bookstore 元素:
<bookstore> <book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore>
某個節(jié)點的子,子的子,等等。
在下面的例子中,bookstore的后代是 book、title、author、year 以及 price 元素:
<bookstore> <book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore>
XPath Axes(坐標(biāo)軸)
我們將在下面的例子中使用此 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>
軸可定義某個相對于當(dāng)前節(jié)點的節(jié)點集。
軸名稱 | 結(jié)果 |
---|---|
ancestor | 選取當(dāng)前節(jié)點的所有先輩(父、祖父等) |
ancestor-or-self | 選取當(dāng)前節(jié)點的所有先輩(父、祖父等)以及當(dāng)前節(jié)點本身 |
attribute | 選取當(dāng)前節(jié)點的所有屬性 |
child | 選取當(dāng)前節(jié)點的所有子元素。 |
descendant | 選取當(dāng)前節(jié)點的所有后代元素(子、孫等)。 |
descendant-or-self | 選取當(dāng)前節(jié)點的所有后代元素(子、孫等)以及當(dāng)前節(jié)點本身。 |
following | 選取文檔中當(dāng)前節(jié)點的結(jié)束標(biāo)簽之后的所有節(jié)點。 |
namespace | 選取當(dāng)前節(jié)點的所有命名空間節(jié)點 |
parent | 選取當(dāng)前節(jié)點的父節(jié)點。 |
preceding | 選取文檔中當(dāng)前節(jié)點的開始標(biāo)簽之前的所有節(jié)點。 |
preceding-sibling | 選取當(dāng)前節(jié)點之前的所有同級節(jié)點。 |
self | 選取當(dāng)前節(jié)點。 |
位置路徑可以是絕對的,也可以是相對的。
絕對路徑起始于正斜杠( / ),而相對路徑不會這樣。在兩種情況中,位置路徑均包括一個或多個步,每個步均被斜杠分割:
/step/step/...
step/step/...
每個步均根據(jù)當(dāng)前節(jié)點集之中的節(jié)點來進(jìn)行計算。
軸(axis)
定義所選節(jié)點與當(dāng)前節(jié)點之間的樹關(guān)系
節(jié)點測試(node-test)
識別某個軸內(nèi)部的節(jié)點
零個或者更多謂語(predicate)
更深入地提煉所選的節(jié)點集
軸名稱::節(jié)點測試[謂語]
例子 | 結(jié)果 |
---|---|
child::book | 選取所有屬于當(dāng)前節(jié)點的子元素的 book 節(jié)點 |
attribute::lang | 選取當(dāng)前節(jié)點的 lang 屬性 |
child::* | 選取當(dāng)前節(jié)點的所有子元素 |
attribute::* | 選取當(dāng)前節(jié)點的所有屬性 |
child::text() | 選取當(dāng)前節(jié)點的所有文本子節(jié)點 |
child::node() | 選取當(dāng)前節(jié)點的所有子節(jié)點 |
descendant::book | 選取當(dāng)前節(jié)點的所有 book 后代 |
ancestor::book | 選擇當(dāng)前節(jié)點的所有 book 先輩 |
ancestor-or-self::book | 選取當(dāng)前節(jié)點的所有book先輩以及當(dāng)前節(jié)點(假如此節(jié)點是book節(jié)點的話) |
child::*/child::price | 選取當(dāng)前節(jié)點的所有 price 孫。 |
XPath 運(yùn)算符
XPath 表達(dá)式可返回節(jié)點集、字符串、邏輯值以及數(shù)字。
下面列出了可用在 XPath 表達(dá)式中的運(yùn)算符:
運(yùn)算符 | 描述 | 實例 | 返回值 |
---|---|---|---|
| | 計算兩個節(jié)點集 | //book | //cd | 返回所有帶有 book 和 cd 元素的節(jié)點集 |
+ | 加法 | 6 + 4 | 10 |
- | 減法 | 6 - 4 | 2 |
* | 乘法 | 6 * 4 | 24 |
p | 除法 | 8 p 4 | 2 |
= | 等于 | price=9.80 | 如果 price 是 9.80,則返回 true。 如果 price 是 9.90,則返回 fasle。 |
!= | 不等于 | price!=9.80 | 如果 price 是 9.90,則返回 true。 如果 price 是 9.80,則返回 fasle。 |
< | 小于 | price<9.80 | 如果 price 是 9.00,則返回 true。 如果 price 是 9.90,則返回 fasle。 |
<= | 小于或等于 | price<=9.80 | 如果 price 是 9.00,則返回 true。 如果 price 是 9.90,則返回 fasle。 |
> | 大于 | price>9.80 | 如果 price 是 9.90,則返回 true。 如果 price 是 9.80,則返回 fasle。 |
>= | 大于或等于 | price>=9.80 | 如果 price 是 9.90,則返回 true。 如果 price 是 9.70,則返回 fasle。 |
or | 或 | price=9.80 or price=9.70 | 如果 price 是 9.80,則返回 true。 如果 price 是 9.50,則返回 fasle。 |
and | 與 | price>9.00 and price<9.90 | 如果 price 是 9.80,則返回 true。 如果 price 是 8.50,則返回 fasle。 |
mod | 計算除法的余數(shù) | 5 mod 2 | 1 |
我們將在下面的例子中使用這個 XML 文檔:
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
我們將使用微軟的 XML DOM 對象來載入 XML 文檔,并使用 selectNodes() 函數(shù)從 XML 文檔選取節(jié)點:
set xmlDoc=CreateObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("books.xml") xmlDoc.selectNodes(路徑表達(dá)式)
下面的這個例子選取了 bookstore 元素下所有的 book 節(jié)點:
xmlDoc.selectNodes("/bookstore/book")
下面的例子僅選取 bookstore 元素下第一個 book 節(jié)點:
xmlDoc.selectNodes("/bookstore/book[0]")
下面的例子從所有的 price 節(jié)點選取文本:
xmlDoc.selectNodes("/bookstore/book/price/text()")
下面的例子會選取所有價格高于 35 的 price 節(jié)點:
xmlDoc.selectNodes("/bookstore/book[price>35]/price")
下面的例子會選取所有價格高于 35 的 title 節(jié)點:
xmlDoc.selectNodes("/bookstore/book[price>35]/title")
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
分享文章:XML中的XPath是什么
文章URL:http://www.rwnh.cn/article44/jjsjee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、品牌網(wǎng)站設(shè)計、微信公眾號、云服務(wù)器、網(wǎng)站維護(hù)、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)