XPath小结
来源:互联网 发布:java装饰模式 编辑:程序博客网 时间:2024/05/16 16:29
1. XPath概述
XPath是一种在XML文件中,进行节点定位和选取的语言。他的核心是通过“路径表达式”,对某一符合路径表达式要求的节点集合进行选取。
2. XPath中的树模型
XPath把XML文件中的节点组织为树状。XPath定义了7中节点类型:根节点,元素节点,文本节点,属性节点,名字空间节点,命令处理节点,注释节点。他们之间的关系可以表述如下:
引用关系
父子关系
根节点
元素节点
文本节点
属性节点
命令处理节点
注释节点
名字空间节点
注:父子关系是指前节点是后节点的父亲,后节点是前节点的儿子。引用关系是指前节点是后节点的父亲,但后节点不是前节点的儿子。
3. 路径表达式(LocationPath)
LocationPath->AbsoluteLocationPath | RelativeLocationPath
AbsoluteLocationPath->/RelativeLocationPath? | AbbreviatedAbsoluteLocationPath
RelativeLocationPath->Step | RelativeLocationPath/Step | AbbreviatedRelativeLocationPath
AbbreviatedAbsoluteLocationPath->//RelativeLocationPath
AbbreviatedRelativeLocationPath-> RelativeLocationPath//Step
AbbreviatedStep->. | ..
AbbreviateAxisSpecifier->@?
Step->AxisSpecifier NodeTest Predicate* | AbbreviatedStep
AxisSpecifier->AxisName:: | AbbreviatedAxisSpecifier
AxisName->ancestor | ancestor-or-self | attribute | child |
descendant | descendant-or-self | following | following-sibling |
namespace | parent | preceding | preceding-sibling | self
NodeTest->
Predicate->[PredicateExpr]
PredicateExpr->Expr
Expr->
AndExpr->EqualityExpr | AndExpr and EqualityExpr
EqualityExpr->RelationExpr | EqualityExpr=RelationExpr | EqualityExpr!=RelationExpr
RelationExpr->AdditiveExpr | RelationExpr<AdditiveExpr | RelationExpr<=AdditiveExpr |
RelationExpr>AdditiveExpr | RelationExpr>=AdditiveExpr
AdditiveExpr-> MultiplicativeExpr | AdditiveExpr+MultiplicativeExpr |
AdditiveExpr–MultiplicativeExpr
MultiplicativeExpr->UnaryExpr | MultiplicativeExpr*UnaryExpr |
MultiplicativeExpr div UnaryExpr |
MultiplicativeExpr mod UnaryExpr
UnaryExpr->UnionExpr | -UnaryExpr
UnionExpr->PathExpr |
PathExpr->LocationPath | FilterExpr | FilterExpr/RelativeLocationPath |
FilterExpr//RelativeLocationPath
FilterExpr->PrimaryExpr | FilterExpr Predicate
PrimaryExpr->VariableReference | (Expr) | Literal | Number | FunctionCall
FunctionCall->FunctionName((Argument(,Argument)*)?)
Argument->Expr
4. 缩写(Abbreviated)
为了简化XPath表达式的表示形式和提高表达式的可读性,XPath提供了一些省略的表达式形式。其中包括:
简写
作用
(空)
self
//
descendant-or-self
@
获取某一属性
.
self
..
parent
.//
descendant
*
child
5. 轴(AxesName)
AxisName->ancestor | ancestor-or-self | attribute | child |
descendant | descendant-or-self | following | following-sibling |
namespace | parent | preceding | preceding-sibling | self
轴用于代表一类的节点集合。XPath一共定义了13个轴,分别是:
a) ancestor:
i. 作用:获取该节点的父节点,及所有祖先节点。(不包括属性节点,名字空间节点)。
b) ancestor-or-self
i. 作用:获取当前节点,及其所有祖先节点。
c) attribute:
i. 作用:获取当前节点的所有属性节点。
d) child:
i. 作用:获取该节点的所有子节点。
e) descendant:
i. 作用:获取该节点的子节点,及所有孙子节点。(不包括属性节点,名字空间节点)。
f) descendant-or-self
i. 作用:获取该节点,及其所有孙子节点。
g) following
i. 作用:获取该节点的所有后续兄弟节点,及其兄弟节点的子孙节点。(不包括属性节点,名字空间节点)。
h) following-sibling
i. 作用:获取该节点的所有后续兄弟节点。(不包括子孙节点,属性节点,名字空间节点)。
i) namespace
i. 作用:获取该节点的名字空间节点。
j) parent
i. 作用:获取该节点的父节点。
k) preceding
i. 作用:获取该节点的所有前导兄弟节点,及其兄弟节点的子孙节点。(不包括属性节点,名字空间节点)。
l) preceding-sibling
i. 作用:获取该节点的所有前导兄弟节点。(不包括子孙节点,属性节点,名字空间节点)。
m) self:
i. 作用:获取当前节点。
6. NodeTest
NodeTest->
NodeTest用于在轴所选择的范围内,对节点集进行筛选和过滤。
NameTest->* | NCName* | Qname
NodyType->comment | text | processing-instruction | node
NCName:表示非限定名,即一般的变量名。
Qname:是带前缀格式的名称。即prefix:name
7. 谓词(Predicate)
Predicate用于对候选的节点集里面的节点进行过滤,当谓词表达式的返回值为true时,该节点将被包括到新的节点集中。
8. 函数(FunctionCall)
FunctionCall->FunctionName((Argument(,Argument)*)?)
Argument->Expr
XPath提供了一个称为核心函数的函数包供程序员使用,其中主要分为节点集函数,字符串函数,布尔函数,数学函数:
a) 节点集函数:
i. number last():
1. 作用:返回最后一个子节点的索引值。
2. 例子:param[last()]:返回最后一个param子节点。
ii. number position()
1. 作用:返回节点在父节点的子节点列表中的索引值。
iii. number count(node-set)
1. 作用:返回节点集中的节点个数。
iv. node-set id(object)
1. 作用:返回id值为object的节点列表。
2. 例子:id("nick"):返回节点id为“nick”的节点集。
b) 字符串函数:
i. string string(object?)
1. 作用:将object的内容转化为string表达式,类试Java中的toString()方法。
ii. string concat(string,string,string*)
1. 作用:将所有的string连接在一起。
iii. boolean starts-with(string,string)
1. 作用:检查第一个字符串是否以第二个字符串作为起始部分
iv. boolean contains(string,string)
1. 作用:检查第一个字符串是否包含第二个字符串。
v. string substring-before(string,string)
1. 作用:返回第一个字符串中第二个字符串出现位置之前的字符子串。
2. 例子:substring-before("abcde","d")返回"abc"。
vi. string substring-after(string,string)
1. 作用:返回第一个字符串中第二个字符串出现位置之后的字符子串。
2. 例子:substring-after("abcde","d")返回"e"
vii. string substring(string,number,number)
1. 作用:第一个数字指定开始索引,第二个数字指定长度。字符串第一个字符的索引为0。
viii. number string-length(string?)
1. 作用:返回字符串长度。
ix. string translate(string,string,string)
1. 作用:第一个字符串中每个在第二个字符串中出现的字符,都将被替换为第三个字符串中相同位置的字符,若第三个字符串中没有对应的字符,则第一个字符串中的该字符不被输出。
2. 例子:translate("abcdef","abc","ABC")返回ABCdef
translate("---abc---","abc-","ABC")返回ABC
c) 布尔函数:
i. boolean boolean(object)
1. 作用:返回object所对应的布尔表达值。
ii. boolean not(boolean)
1. 作用:取反。
d) 数学函数:
i. number number(object)
1. 作用:返回object所对应的数值。
ii. number sum(node-set)
1. 作用:求节点集中各节点的number值总和。
iii. number floor(number)
1. 作用:返回不大于number的最大整数值。
iv. number ceiling(number)
1. 作用:返回不小于number的最大整数值。
v. number round(number)
1. 作用:返回number的近似值。
- XPath小结
- XPath 小结
- xPath小结
- selenium Xpath小结
- 日常小结-XPath用于解析XML文档
- python中xpath常用方法 小结
- xpath
- XPATH
- XPATH
- XPATH
- xpath
- XPath
- xPath
- Xpath
- XPath
- XPath
- XPath
- xpath
- 工作真是太累了
- “关于2000版ISO9001标准的新思考”之一
- 软件文档知多少?
- some configure files for FreeBSD 5.3R
- 每天一吻情更浓
- XPath小结
- Oracle常用Sql列表
- 读书笔记——重构
- 红外模拟串口
- XPath的规范
- 要静下心参加自考了...
- 怀念我难产的程序
- 去掉连接图片的虚线框
- 追忆年华——七八十年代的玩具!!!