XPath语法
XPath使用路径表达式选取XML文档中的节点或者节点集。
路径表达式
| 表达式 | 描述 |
|---|---|
| nodename | 获得该节点下的所有节点 |
| / | 从根节点开始 |
| // | 从匹配选择的当前节点开始,不考虑位置 |
| . | 选取当前节点 |
| … | 选取当前节点的父节点 |
| @ | 选取属性 |
比如:
| 表达式 | 描述 |
|---|---|
| nation | 选取nation元素所有子节点 |
| /nation | 选取根节点nation,斜杠 / 开始表示当该元素的绝对路径 |
| nation/province | 选取属于nation子元素的所有province元素 |
| //province | 选取所有province元素 |
| nation//province | 选取nation元素后代的所有province元素 |
| //@lang | 选取名为lang的所有属性 |
谓语
谓语放在路径表达式后面的方括号里。用于对选取的结果筛选。
| 路径表达式 | 结果 |
|---|---|
| /nation/province[1] | 选取属于nation子元素的第一个province元素 |
| /nation/province[last()] | 选取属于nation子元素的最后一个province元素 |
| /nation/province[last()-1] | 选取属于nation子元素的倒数第二个province元素 |
| /nation/province[position()<10 | 选取属于nation子元素的前9个province元素,位置是从1开始 |
| //title[@lang] | 选取所有lang属性的title元素 |
| //title[@lang=‘eng’] | 选取所有lang属性值为eng的title元素 |
| nation/province[popu>1000] | 选取nation子元素所有province元素,且popu元素值大于1000 |
| nation/province[popi>1000]//title | 选取nation子元素所有province元素,其中price元素大于1000。从结果中选取所有title元素 |
匹配位置节点
XPath通配符可以匹配位置的XML元素。
| 通配符 | 描述 |
|---|---|
| * | 匹配任何元素节点 |
| @* | 匹配任何属性节点 |
| node() | 匹配任何类型的节点 |
比如:
| 路径表达式 | 结果 |
|---|---|
| /nation/* | 选取nation元素的所有子元素 |
| //* | 选取文档中的所有元素 |
| //title[@*] | 选取所有带有属性的title元素 |
表达式组合
使用 | 将表达式组合在一起,选取多个路径。
| 路径表达式 | 结果 |
|---|---|
| //nation/state | //nation/province | 选取nation元素所有的state元素和province元素 |
| //state | //province | 选取所有的state元素和province元素 |
| /nation/province/worker | //popu | 选取nation元素下province元素所有的worker元素,和文档中所有的popu元素 |
XPath轴
轴定义相对于当前节点的所有节点集
| 轴名称 | 结果 |
|---|---|
| ancestor | 选取当前节点的所有祖先节点 |
| ancestor-or-self | 选取当前节点的所有祖先节点以及自身节点 |
| attribute | 选取当前节点的所有属性 |
| child | 选取当前节点的所有子元素 |
| descendant | 选取当前节点的所有子孙元素 |
| descendant-or-self | 选取当前节点的所有子孙元素以及自身节点 |
| following | 选取文档中当前节点的结束标签之后的所有节点 |
| following-sibling | 选取当前节点之后的所有兄弟节点 |
| namespace | 选取当前节点的所有命名空间节点 |
| parent | 选取当前节点的父节点 |
| preceding | 选取文档中当前节点的开始标签之前的所有节点 |
| preceding-sibling | 选取当前节点之前的所有兄弟节点 |
| self | 选取当前节点 |
XPath运算符
XPath表达式可返回节点集、字符串、逻辑、以及数字
| 运算符 | 演示 | 结果 |
|---|---|---|
| | | //province | //state | 返回所有province和state元素集 |
| + | 6 + 4 | 10 |
| - | 6 - 4 | 2 |
| * | 6*4 | 24 |
| div | 4 div 2 | 2 |
| = | popu = 1000 | 如果popu为1000,返回true,否则返回false |
| != | popu != 1000 | 如果popu不是1000,返回true,否则返回false |
| < | popu < 1000 | 如果popu小于1000,返回true,否则返回false |
| <= | popu <= 1000 | 满足条件返回true,否则返回false |
| > | popu > 1000 | 满足条件返回true,否则返回false |
| >= | popu >= 1000 | 满足条件返回true,否则返回false |
| or | popu = 1000 or popu = 2000 | popu为1000或者2000返回true,否则返回false |
| and | popu > 1000 and popu< 2000 | popu为1000与2000之间的值,返回true,否则返回false |
| mod | 5 mod 2 | 1 |
函数
- 上下文函数
| 名称 | 说明 |
|---|---|
| fn:position() | 返回当前正处理的节点的index位置 |
| fn:last() | 返回当前正处理节点列表中项目数目 |
| fn:current-dataTime() | 返回当前的dateTime(带有时区) |
| fn:current-data() | 返回当前的日期(带有时区) |
| fn:current-time() | 返回当前的时间(带有时区) |
| fn:implicit-timezone() | |
| fn:default-collation() | 返回默认对照的值 |
| fn:static-base-uri |
最后
以上就是落后啤酒最近收集整理的关于XPath学习笔记XPath语法XPath轴XPath运算符函数的全部内容,更多相关XPath学习笔记XPath语法XPath轴XPath运算符函数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复