好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Xpath定位的总结

1. 相对定位与绝对定位

// 表示相对定位,对于经常发生变化的页面或者节点要用相对定位进行查找

/ 表示绝对定位, 一成不变的时候可以用绝对 定位进行查找

2. 节点

顶级节点: bookstore

当前节点 : “ . ”

如果当前节点有多个则匹配多个

如果当前节点只有 1 个,则匹配 1 个

选取当前节点的 父 节点 : ” .. ”

对于 html/body下的p来说它的父节点就是body,这是用绝对路径,表示必须从html下找到body再找到p,然后匹配p的父节点。

如果用相对路径来找父节点,可以看到从 p 开始就不考虑它的绝对位置,也就是说从 body 开始 符合父节点条件的所有元素都会被找出来。

查找当前节点下的所有元素: //book[1]/..

这个是节点索引 +父节点的方式

3. 通过标签定位元素

//book :找到所有名为 book 的标签

再来一个百度的

4. 属性定位

1. 定位属性为 category 的元素

//book[@category='cooking'] ‘ [] ’表示查找属性

2. 使用 text文本属性精确定位,text也可以用.代替

查找 //book//price下文本为30.00的元素

查找 year 标签中 text 文本中大于 2004 的元素

3.使用contains 模糊定位, contains 意为包含

模糊定位查找文本信息包含 Potter的元素://title[contains(text(),"Potter")]

扩充练习

4.”*” 表示任何属性所有属性

查找所有带有属性值的: //@*

查找 title 标签 里 所有有属性的元素 :

用 Not 取反 , 表示查找 title 标签里没有属性的元素,这里没有所以没查找出来

@* 表示所有属性

not(@*) 表示没有属性

5. 查找带有 category属性的元素

//@category

5. 逻辑运算符

1. 通过 and运算符定位元素

//book[@category="web" and @cover="paperback"]

2.通过or运算符定位元素 //book[@category="children" or @cover="paperback"]

3. 通过取反 not运算符定位元素

//book[not(position()>2)] 取 book标签中position 大于 2的

//book[not(position()>2)] not取反

//year[not(.=2005)] 表示取非 2005文本节点的year节点

通过 “>=”“<=” 运算符 定位元素 //price>=30 查找 元素中是否存在 price大于等于30的 存在返回 Boolean true 不存在返回 Boolean: false

4. 通过 “!” 运算符 定位元素

//book[@category!='web' ]

6. 通过节点索引定位元素

1. 查找第一个元素的

//book[1] :找到第一个标签为 book 的

2. 通过 position 定位 第 3个 元素

//bookstore/book[position()=3]

3. 通过 position取多个元素

//bookstore/book[position()>=2]

4.通过last() 函数找到最后一个元素

//book[last()]

5. 通过 last() 函数找到倒数第二个元素 //book[last()-1]

7. 轴定位

查找 book[1]/title 的父元素: //book[1]/title/parent::*

查找 book[1] 的子元素: //book[1]/child::*

//book/child::price 查找 book标签下的所有子元素中标签为price的

following-sibling 的应用 //bookstore/book[1]/child::title/following-sibling::*

following-sibling表示当前节点的后序所有兄弟节点元素

就是说查找 title后面所有兄弟节点

/bookstore/book[1]/child::title/following-sibling::author

following-sibling::author 指定查找 title后面所有兄弟节点中名为author 的元素

preceding-sibling::* 表示当前节点的前面所有兄弟节点元素

//bookstore/book[1]/child::price/preceding-sibling::* 意为查找 price节点前面所有的兄弟元素

查找祖先节点包括自身: //book[1]/ancestor-or-self::*

查找子孙节点包括自身: //book[1]/descendant-or-self::*

查找当前节点的所有元素: //book[1]/preceding::* 查找当前节点下的所有元素

//book[2]//preceding::* 会把 book[2]以及book[2]节点之前的所有元素都找出来

轴总结:

parent::* 表示当前节点的父节点元素 ancestor::* 表示当前节点的祖先节点元素 child::* 表示当前节点的子元素 /A/descendant::* 表示A的所有后代元素 self::* 表示当前节点的自身元素 ancestor-or-self::* 表示当前节点的及它的祖先节点元素 descendant-or-self::* 表示当前节点的及它们的后代元素 following-sibling::* 表示当前节点的后序所有兄弟节点元素 preceding-sibling::* 表示当前节点的前面所有兄弟节点元素 following::* 表示当前节点的后序所有元素 preceding::* 表示当前节点的所有元素

以上就是Xpath定位的总结的详细内容,更多请关注Gxl网其它相关文章!

查看更多关于Xpath定位的总结的详细内容...

  阅读:59次