xpath

1 什么是xpath

xpath是xml path的缩写,它是一种表达式语言,用于定位xml树中的结点。

2 “/”和“//”的区别

比如"/html/body",取出来的就是该html的body部分所有的内容。

“/”是用来构成绝对路径的,从root结点开始。

“//”是相对寻址的,比如//p,会找到html中的所有的<p></p>,无论它们在什么位置。

3 predicate

方括号[xxx]被称为predicate,它作用于一个子集合,用于进一步缩小该子集合的范围。

比如://list/item,将会将list node下所有的item node都选定,但是如果加上一个predicate,//list/item[@lang],那么就加了一个条件,该item必须有@lang这个属性,这样将不满足条件的item node给剔除掉了。

4 axis

axis是用来进行更加精准定位的。axis定义了一个相对于当前node的一个node  set,也就是说,它基于的对象是node。

首先通过绝对路径定位一个比较好定位的node,然后通过axis进行精准定位。

例如:

//div[@id='div1']/child::img

首先找到id为div1的div,然后找到它所有的child node中名字为img的node。

5 xml的node

5.1 基本的node

element node和attribute node

<bookstore> (root element node)

<author>J K. Rowling</author> (element node)

lang="en" (attribute node)

5.2 node之间的关系,axis就是用的node之间的关系进行的定位

parent,每个element node和attribute node都只有一个parent。

child,每个element node有0个、1个或者多个child node。

ancester,所有的祖先的集合,一直到root node。

descendant,所有的child的集合,一直到叶子,即到属性node。

6 有用的函数

6.1 last()

一个集合中的最后一个元素,用于predicate中。

6.2 text()

获取一个node中的text()。

7 表达式

>,=,|

“|”两个集合的并集。

8 一个path中使用了两个“//”是什么意思

两个都是任意的意思,只是前面一个的任意的范围比后面一个要大,后面一个任意是在前面的基础上进一步任意。

原文地址:https://www.cnblogs.com/hustdc/p/7798927.html