亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

XML中的XPath是什么

發布時間:2020-07-10 15:50:20 來源:億速云 閱讀:192 作者:Leah 欄目:編程語言

XML中的XPath是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

 XPath 是一門在 XML 文檔中查找信息的語言。XPath 用于在 XML 文檔中通過元素和屬性進行導航。

什么是 XPath?

  • XPath 使用路徑表達式在 XML 文檔中進行導航

  • XPath 包含一個標準函數庫

  • XPath 是 XSLT 中的主要元素

  • XPath 是一個 W3C 標準

XPath 路徑表達式

XPath 使用路徑表達式來選取 XML 文檔中的節點或者節點集。這些路徑表達式和我們在常規的電腦文件系統中看到的表達式非常相似。

XPath 標準函數

XPath 含有超過 100 個內建的函數。這些函數用于字符串值、數值,日期和時間比較、節點和 QName 處理、序列處理、邏輯值等等。

在 XPath 中,有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔節點(或成為根節點)。

XPath 術語

節點(Node)

在 XPath 中,有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節點。XML 文檔是被作為節點樹來對待的。樹的根被稱為文檔節點或者根節點。

請看下面這個 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" (屬性節點)

基本值(或稱原子值,Atomic value)

基本值是無父或無子的節點。

基本值的例子:

J K. Rowling
"en"

項目(Item)

項目是基本值或者節點。

節點關系

父(Parent)

每個元素以及屬性都有一個父。

在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

子(Children)

元素節點可有零個、一個或多個子。

在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

同胞(Sibling)

擁有相同的父的節點

在下面的例子中,title、author、year 以及 price 元素都是同胞:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

先輩(Ancestor)

某節點的父、父的父,等等。

在下面的例子中,title 元素的先輩是 book 元素和 bookstore 元素:

<bookstore>

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

后代(Descendant)

某個節點的子,子的子,等等。

在下面的例子中,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(坐標軸)

XML 實例文檔

我們將在下面的例子中使用此 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>

XPath 軸

軸可定義某個相對于當前節點的節點集。

軸名稱結果
ancestor選取當前節點的所有先輩(父、祖父等)
ancestor-or-self選取當前節點的所有先輩(父、祖父等)以及當前節點本身
attribute選取當前節點的所有屬性
child選取當前節點的所有子元素。
descendant選取當前節點的所有后代元素(子、孫等)。
descendant-or-self選取當前節點的所有后代元素(子、孫等)以及當前節點本身。
following選取文檔中當前節點的結束標簽之后的所有節點。
namespace選取當前節點的所有命名空間節點
parent選取當前節點的父節點。
preceding選取文檔中當前節點的開始標簽之前的所有節點。
preceding-sibling選取當前節點之前的所有同級節點。
self選取當前節點。

位置路徑表達式

位置路徑可以是絕對的,也可以是相對的。

絕對路徑起始于正斜杠( / ),而相對路徑不會這樣。在兩種情況中,位置路徑均包括一個或多個步,每個步均被斜杠分割:

絕對位置路徑:

/step/step/...

相對位置路徑:

step/step/...

每個步均根據當前節點集之中的節點來進行計算。

步(step)包括:

  • 軸(axis)

  • 定義所選節點與當前節點之間的樹關系

  • 節點測試(node-test)

  • 識別某個軸內部的節點

  • 零個或者更多謂語(predicate)

  • 更深入地提煉所選的節點集

步的語法:

軸名稱::節點測試[謂語]

實例

例子結果
child::book選取所有屬于當前節點的子元素的 book 節點
attribute::lang選取當前節點的 lang 屬性
child::*選取當前節點的所有子元素
attribute::*選取當前節點的所有屬性
child::text()選取當前節點的所有文本子節點
child::node()選取當前節點的所有子節點
descendant::book選取當前節點的所有 book 后代
ancestor::book選擇當前節點的所有 book 先輩
ancestor-or-self::book選取當前節點的所有book先輩以及當前節點(假如此節點是book節點的話)
child::*/child::price選取當前節點的所有 price 孫。

XPath 運算符

XPath 表達式可返回節點集、字符串、邏輯值以及數字。

XPath 運算符

下面列出了可用在 XPath 表達式中的運算符:

運算符描述實例返回值
|計算兩個節點集//book | //cd返回所有帶有 book 和 cd 元素的節點集
+加法6 + 410
-減法6 - 42
*乘法6 * 424
p除法8 p 42
=等于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。

orprice=9.80 or price=9.70

如果 price 是 9.80,則返回 true。

如果 price 是 9.50,則返回 fasle。

andprice>9.00 and price<9.90

如果 price 是 9.80,則返回 true。

如果 price 是 8.50,則返回 fasle。

mod計算除法的余數5 mod 21

XML實例文檔

我們將在下面的例子中使用這個 XML 文檔:

"books.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() 函數從 XML 文檔選取節點:

set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("books.xml")

xmlDoc.selectNodes(路徑表達式)

選取所有的 book 節點

下面的這個例子選取了 bookstore 元素下所有的 book 節點:

xmlDoc.selectNodes("/bookstore/book")

選取第一個 book 節點

下面的例子僅選取 bookstore 元素下第一個 book 節點:

xmlDoc.selectNodes("/bookstore/book[0]")

選取 price

下面的例子從所有的 price 節點選取文本:

xmlDoc.selectNodes("/bookstore/book/price/text()")

選取價格高于 35 的 price 價格

下面的例子會選取所有價格高于 35 的 price 節點:

xmlDoc.selectNodes("/bookstore/book[price>35]/price")

選取價格高于 35 的 title 節點

下面的例子會選取所有價格高于 35 的 title 節點:

xmlDoc.selectNodes("/bookstore/book[price>35]/title")

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

监利县| 马尔康县| 革吉县| 噶尔县| 绿春县| 云阳县| 湖口县| 红桥区| 汕头市| 鹿泉市| 成都市| 漾濞| 揭东县| 陆良县| 台北县| 闵行区| 沅江市| 南木林县| 保亭| 买车| 昆山市| 盱眙县| 博兴县| 怀化市| 桑植县| 开鲁县| 合阳县| 涟源市| 四平市| 大城县| 永寿县| 台山市| 林西县| 城口县| 即墨市| 交口县| 盐亭县| 普陀区| 惠来县| 专栏| 万荣县|