xpath解析数据
xpath是一种用于在xml文档中选择节点的语言,也可以用于在html文档中选择元素路径。虽然xpath最初是为了xml设计的,但它同样适用于html。
节点的关系:
- 父
- 子
- 同胞
- 先辈
- 后代
常用路径表达式
表达式 | 描述 |
nodename | 选取此节点的所有子节点 |
/ | 从根节点选取 |
// | 从匹配选择的当前节点中选择文档的节点 |
. | 获取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选择属性 |
通配符
通配符 | 描述 |
* | 匹配任何元素节点 |
@ | 匹配任何属性节点 |
node() | 匹配任何类型的节点 |
选择若干路径
表达式 | 结果 |
xpath('//div | //table') | 获取所有的div与table节点 |
谓语 (谓语被嵌在方括号内,用来查找特定的节点或包含某个制定的值的节点)
表达式 | 结果 |
xpath('/body/div[1]') | 选取body下的第1个div节点 |
xpath('/body/div[last()]') | 选取body下最后一个div节点 |
xpath('/body/div[last()-1]') | 选取body下倒数第二个节点 |
xpath('/body/div[position()<3]') | 选取body下前两个div节点 |
xpath('/body/div[@class]') | 选取body下带有class属性的div节点 |
xpath('/body/div[@class="main"]') | 选取body下class属性为main的div节点 |
xpath('/body/div[price>35.00]') | 选取body下price元素大于35的div节点 |
运算符
运算符 | 描述 |
+ | 加 |
- | 减 |
* | 乘 |
div | 除 |
= | 等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
or | 或 |
and | 与 |
mod | 计算除法的余数 |
| | 计算两个节点集 |
七种基本节点类型
节点 | 描述 |
element | 元素节点,代表xml文档中的标签,例如<book> |
attribute | 属性节点,表示元素中的属性,例如<book lang='en'>中的lang |
text | 文本节点,包含在元素内的文本内容,例如<book>harry potter</book>中的harry potter |
comment | 注释节点,xml文档中的注释,以<!-- ... -->形式存在 |
root | 根节点,代表整个xml文档,是文档最顶层节点 |
namespace | 命名空间节点,用于区分同名但是属于不同上下文的元素 |
processing | 处理指令节点,用于提供给xml处理器的指令,通常以<? ... ?>形式出现 |
xpath轴