概述
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运算符函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复