欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C#-xpath

C#--XPath  

XML 文檔對象模型 (DOM) 包含的方法使您可以使用 XML 路徑語(yǔ)言 (XPath) 瀏覽功能查詢(xún) DOM 中的信息。 可以使用 XPath 查找單個(gè)特定節點(diǎn),或查找與某個(gè)條件匹配的所有節點(diǎn)。

XPath 選擇方法

如果不使用 XPath,則檢索 DOM 中的一個(gè)或多個(gè)節點(diǎn)將需要大量導航代碼。 而使用 XPath 只需要一行代碼。 DOM 類(lèi)提供兩種 XPath 選擇方法。 SelectSingleNode 方法返回符合選擇條件的第一個(gè)節點(diǎn)。 SelectNodes 方法返回包含匹配節點(diǎn)的 XmlNodeList。

下面的示例顯示一個(gè) XPath 查詢(xún),該查詢(xún)返回包含書(shū)作者 Smith 的所有節點(diǎn)。

XmlDocument doc = new XmlDocument(filePath);
       XmlNode root = doc.DocumentElement;
       nodeList = root.SelectNodes("descendant::book[author/last-name='Smith']");


XPath可分為四種數據類(lèi)型:

--節點(diǎn)集(node-set):節點(diǎn)集是通過(guò)路徑匹配返回的符合條件的一組節點(diǎn)的集合。其它類(lèi)型的數據不能轉換為節點(diǎn)集。
--布爾值(boolean):由函數或布爾表達式返回的條件匹配值,與一般語(yǔ)言中的布爾值相同,有true和false兩個(gè)值。布爾值可以和數值類(lèi)型、字符串類(lèi)型相互轉換。
--字符串(string):字符串即包含一系列字符的集合,XPath中提供了一系列的字符串函數。字符串可與數值類(lèi)型、布爾值類(lèi)型的數據相互轉換。
--數值(number):在XPath 中數值為浮點(diǎn)數,可以是雙精度64位浮點(diǎn)數。另外包括一些數值的特殊描述,如非數值NaN(Not-a-Number)、正無(wú)窮大infinity、負無(wú) 窮大-infinity、正負0等等。number的整數值可以通過(guò)函數取得,另外,數值也可以和布爾類(lèi)型、字符串類(lèi)型相互轉換。 

在XPath中,將節點(diǎn)劃分為七種節點(diǎn)類(lèi)型:

----根節點(diǎn)(Root Node):根節點(diǎn)是一棵樹(shù)的最上層,根節點(diǎn)是唯一的。樹(shù)上其它所有元素節點(diǎn)都是它的子節點(diǎn)或后代節點(diǎn)。對根節點(diǎn)的處理機制與其它節點(diǎn)相同。在XSLT中對樹(shù)的匹配總是先從根節點(diǎn)開(kāi)始。
 
----元素節點(diǎn)(Element Nodes):元素節點(diǎn)對應于文檔中的每一個(gè)元素,一個(gè)元素節點(diǎn)的子節點(diǎn)可以是元素節點(diǎn)、注釋節點(diǎn)、處理指令節點(diǎn)和文本節點(diǎn)??梢詾樵毓濣c(diǎn)定義一個(gè)唯一的標識id。元素節點(diǎn)都可以有擴展名,它是由兩部分組成的:一部分是命名空間URI,另一部分是本地的命名。

----文本節點(diǎn)(Text Nodes):文本節點(diǎn)包含了一組字符數據,即CDATA中包含的字符。任何一個(gè)文本節點(diǎn)都不會(huì )有緊鄰的兄弟文本節點(diǎn),而且文本節點(diǎn)沒(méi)有擴展名。 

----屬性節點(diǎn)(Attribute Nodes)每 一個(gè)元素節點(diǎn)有一個(gè)相關(guān)聯(lián)的屬性節點(diǎn)集合,元素是每個(gè)屬性節點(diǎn)的父節點(diǎn),但屬性節點(diǎn)卻不是其父元素的子節點(diǎn)。這就是說(shuō),通過(guò)查找元素的子節點(diǎn)可以匹配出元 素的屬性節點(diǎn),但反過(guò)來(lái)不成立,只是單向的。再有,元素的屬性節點(diǎn)沒(méi)有共享性,也就是說(shuō)不同的元素節點(diǎn)不共有同一個(gè)屬性節點(diǎn)。

對缺省屬性的處理等同于定義了的屬性。如果一個(gè)屬性是在DTD聲明的,但聲明為#IMPLIED,而該屬性沒(méi)有在元素中定義,則該元素的屬性節點(diǎn)集中不包含該屬性。

此外,與屬性相對應的屬性節點(diǎn)都沒(méi)有命名空間的聲明。命名空間屬性對應著(zhù)另一種類(lèi)型的節點(diǎn)。


----命名空間節點(diǎn)(Namespace Nodes):每一個(gè)元素節點(diǎn)都有一個(gè)相關(guān)的命名空間節點(diǎn)集。在XML文檔中,命名空間是通過(guò)保留屬性聲明的,因此,在XPath中,該類(lèi)節點(diǎn)與屬性節點(diǎn)極為相似,它們與父元素之間的關(guān)系是單向的,并且不具有共享性。

----處理指令節點(diǎn)(Processing Instruction Nodes):處理指令節點(diǎn)對應于XML文檔中的每一條處理指令。它也有擴展名,擴展名的本地命名指向處理對象,而命名空間部分為空。

----注釋節點(diǎn)(Comment Nodes):注釋節點(diǎn)對應于文檔中的注釋。

 

下面,我們來(lái)構造一棵XML文檔樹(shù),作為后面舉例的依托:

<A id="a1">

  <B id="b1">

    <C id="c1">

      <B name="b"/>

      <D id="d1"/>

      <E id="e1"/>

      <E id="e2"/>

    </C>

  </B>

  <B id="b2"/>

  <C id="c2">

    <B/>

    <D id="d2"/>

    <F/>

  </C>

  <E/>

</A>


*****路徑匹配

路徑匹配與文件路徑的表示相仿,比較好理解。有以下幾個(gè)符號:

符  號 含  義 舉  例 匹配結果
/指示節點(diǎn)路徑/A/C/D節點(diǎn)"A"的子節點(diǎn)"C"的子節點(diǎn)"D",即id值為d2的D節點(diǎn)
/根節點(diǎn)
//所有路徑以"http://"后指定的子路徑結尾的元素//E所有E元素,結果是所有三個(gè)E元素
//C/E所有父節點(diǎn)為C的E元素,結果是id值為e1和e2的兩個(gè)E元素
*路徑的通配符/A/B/C/*A元素→B元素→C元素下的所有子元素,即name值為b的B元素、id值為d1的D元素和id值為e1和e2的兩個(gè)E元素
/*/*/D上面有兩級節點(diǎn)的D元素,匹配結果是id值為d2的D元素
//*所有的元素
|邏輯或//B | //C所有B元素和C元素

 

*****位置匹配

對于每一個(gè)元素,它的各個(gè)子元素是有序的。如:

舉  例 含  義 匹配結果
/A/B/C[1]A元素→B元素→C元素的第一個(gè)子元素name值為b的B元素
/A/B/C[last()]A元素→B元素→C元素的最后一個(gè)子元素id值為e2的E元素
/A/B/C[position()>1]A元素→B元素→C元素之下的位置號大于1的元素id值為d1的D元素和兩個(gè)具有id值的E元素

 

*****屬性及屬性

在XPath中可以利用屬性及屬性值來(lái)匹配元素,要注意的是,元素的屬性名前要有"@"前綴。例如:

舉  例 含  義 匹配結果
//B[@id]所有具有屬性id的B元素id值為b1和b2的兩個(gè)B元素
//B[@*]所有具有屬性的B元素兩個(gè)具有id屬性的B元素和一個(gè)具有name屬性B元素
//B[not(@*)]所有不具有屬性的B元素A元素→C元素下的B元素
//B[@id="b1"]id值為b1的B元素A元素下的B元素

 

*****親屬關(guān)系匹配

XML文檔可歸結為樹(shù)型結構,因此任何一個(gè)節點(diǎn)都不是孤立的。通常我們把節點(diǎn)之間的歸屬關(guān)系歸結為一種親屬關(guān)系,如父親、孩子、祖先、后代、兄弟等等。在對元素進(jìn)行匹配時(shí),同樣可以用到這些概念。例如:

舉  例 含  義 匹配結果
//E/parent::*所有E節點(diǎn)的父節點(diǎn)元素id值為a1的A元素和id值為c1的C元素
//F/ancestor::*所有F元素的祖先節點(diǎn)元素id值為a1的A元素和id值為c2的C元素
/A/child::*A的子元素id值為b1、b2的B元素,id值為c2的C元素,以及沒(méi)有任何屬性的E元素
/A/descendant::*A的所有后代元素除A元素以外的所有其它元素
//F/self::*所有F的自身元素F元素本身
//F/ancestor-or-self::*所有F元素及它的祖先節點(diǎn)元素F元素、F元素的父節點(diǎn)C元素和A元素
/A/C/descendant-or-self::*所有A元素→C元素及它們的后代元素id值為c2的C元素、該元素的子元素B、D、F元素
/A/C/following-sibling::*A元素→C元素的緊鄰的后序所有兄弟節點(diǎn)元素沒(méi)有任何屬性的E元素
/A/C/preceding-sibling::*A元素→C元素的緊鄰的前面所有兄弟節點(diǎn)元素id值為b1和b2的兩個(gè)B元素
/A/B/C/following::*A元素→B元素→C元素的后序的所有元素id為b2的B元素、無(wú)屬性的C元素、無(wú)屬性的B元素、id為d2的D元素、無(wú)屬性的F元素、無(wú)屬性的E元素。
/A/C/preceding::*A元素→C元素的前面的所有元素id為b2的B元素、id為e2的E元素、id為e1的E元素、id為d1的D元素、name為b的B元素、id為c1的C元素、id為b1的B元素

*****條件匹配   

    條件匹配就是利用一些函數的運算結果的布爾值來(lái)匹配符合條件的節點(diǎn)。常用于條件匹配的函數有四大類(lèi):節點(diǎn)函數、字符串函數、數值函    數、布爾函數。例如前面提到的last()、position()等等。這些功能函數可以幫助我們精確尋找需要的節點(diǎn)。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
XML認證教程,第 5 部分: XPATH
Appium元素定位(二)
XPath常用定位節點(diǎn)元素語(yǔ)句總結 - 中國龍 - 博客園
Xpath語(yǔ)法
XML
Xpath語(yǔ)法&示例
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久