五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > xpath里如何定義包含一個或多個class屬性

xpath里如何定義包含一個或多個class屬性

文章來源:365jz.com     點擊數(shù):7313    更新時間:2018-03-21 22:00   參與評論

xpath如何取包含多個class屬性

如果html結(jié)構(gòu)是這樣

        <div class="demo"></div>

那么我知道可以寫xpath //div[@class="demo"],但是如果我的html是

        <div class="test demo"></div>
<div class="demo test"></div>
<div class="test demo2"></div>

我只想選出有demo這個class的對象,那應(yīng)該怎么弄


要取多個class屬性值的元素,應(yīng)該如何辦呢;

如:

        <div class='a b'>test</div>


如果是用xpath('//div[@class="a"]') 會取不到這里面的值;


可以用如下的表達式:

        xpath('//div[contains(@class,"a")]')   #它會取得所有class為a的元素


或者

        xpath('//div[contains(@class,"a") and contains(@class,"b")]') #它會取class同時有a和b的元素



如果沒記錯的話可以這么來:

        //div[contains(@class, 'demo')]

如果是多個則可以:

        //div[contains(@class, 'demo') and contains(@class, 'other')]

如果目標 class 不一定是第一個,那么:

        //div[contains(concat(' ', @class, ' '), 'demo')]

順便一提,用 Jetbrains 家的 IDE,里面有內(nèi)置的 xpath 規(guī)則生成器。

一、選取節(jié)點
常用的路勁表達式:

表達式描述實例
nodename選取nodename節(jié)點的所有子節(jié)點
xpath('//div’)
選取了div節(jié)點的所有子節(jié)點
/從根節(jié)點選取xpath('/div’)從根節(jié)點上選取div節(jié)點
//選取所有的當(dāng)前節(jié)點,不考慮他們的位置
xpath('//div’)選取所有的div節(jié)點
.選取當(dāng)前節(jié)點xpath('./div’)
選取當(dāng)前節(jié)點下的div節(jié)點
..選取當(dāng)前節(jié)點的父節(jié)點
xpath('..’)回到上一個節(jié)點
@選取屬性
xpath(’//@calss’)
選取所有的class屬性

二、謂語

謂語被嵌在方括號內(nèi),用來查找某個特定的節(jié)點或包含某個制定的值的節(jié)點

實例:

 

表達式結(jié)果
xpath('/body/div[1]’)
選取body下的第一個div節(jié)點
xpath('/body/div[last()]’)
選取body下最后一個div節(jié)點
xpath('/body/div[last()-1]’)選取body下倒數(shù)第二個div節(jié)點
xpath('/body/div[positon()<3]’)選取body下前兩個div節(jié)點
xpath('/body/div[@class]’)選取body下帶有class屬性的div節(jié)點
xpath('/body/div[@class="main"]’)選取body下class屬性為main的div節(jié)點
xpath('/body/div[price>35.00]’)選取body下price元素值大于35的div節(jié)點

 三、通配符

Xpath通過通配符來選取未知的XML元素

表達式結(jié)果
xpath(’/div/*’)
選取div下的所有子節(jié)點
xpath('/div[@*]’)
選取所有帶屬性的div節(jié)點

 四、取多個路徑

使用"|"運算符可以選取多個路徑

>

表達式結(jié)果
xpath('//div|//table’)
選取所有的div和table節(jié)點

五、Xpath軸

軸可以定義相對于當(dāng)前節(jié)點的節(jié)點集

軸名稱表達式描述
ancestor
xpath('./ancestor::*’)選取當(dāng)前節(jié)點的所有先輩節(jié)點(父、祖父)
ancestor-or-selfxpath('./ancestor-or-self::*’)選取當(dāng)前節(jié)點的所有先輩節(jié)點以及節(jié)點本身
attributexpath('./attribute::*’)選取當(dāng)前節(jié)點的所有屬性
childxpath('./child::*’)返回當(dāng)前節(jié)點的所有子節(jié)點
descendantxpath('./descendant::*’)返回當(dāng)前節(jié)點的所有后代節(jié)點(子節(jié)點、孫節(jié)點)
followingxpath('./following::*’)選取文檔中當(dāng)前節(jié)點結(jié)束標簽后的所有節(jié)點
following-sibingxpath('./following-sibing::*’)選取當(dāng)前節(jié)點之后的兄弟節(jié)點
parentxpath('./parent::*’)選取當(dāng)前節(jié)點的父節(jié)點
precedingxpath('./preceding::*’)選取文檔中當(dāng)前節(jié)點開始標簽前的所有節(jié)點

 

preceding-siblingxpath('./preceding-sibling::*’)選取當(dāng)前節(jié)點之前的兄弟節(jié)點
selfxpath('./self::*’)選取當(dāng)前節(jié)點

 

六、功能函數(shù)   

使用功能函數(shù)能夠更好的進行模糊搜索

函數(shù)用法解釋
starts-withxpath('//div[starts-with(@id,"ma")]')選取id值以ma開頭的div節(jié)點
contains
xpath('//div[contains(@id,"ma")]')選取id值包含ma的div節(jié)點
and
xpath('//div[contains(@id,"ma") and contains(@id,"in")]')選取id值包含ma和in的div節(jié)點
text()xpath('//div[contains(text(),"ma")]')選取節(jié)點文本包含ma的div節(jié)點




如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答!! 點擊進入論壇

發(fā)表評論 (7313人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號