Simon 's Blog
» 做笔记做笔记
Toggle navigation
Simon 's Blog
HOME
总裁介绍
coper
zongcai
what
ARCH
TAGS
navigation
!!! XPath
? XPATH ?
2018-02-27 10:51:02
387
0
0
simon88
? XPATH ?
[TOC] 在minixml使用或者什么的,我们不能跨层获取某一个元素,必须一层一层去获取。利用`XPath`能解决问题,类似正则表达式。 # 1.以"`/`"开始,该路径就表示到一个元素的绝对路径 - `/AAA`,它表示选择根元素`AAA` - `/AAA/CCC`,表示选择`AAA`的所有`CCC`子元素 - `/AAA/DDD/BBB`,表示选择`AAA`的子元素`DDD`的所有`BBB`子元素 # 2.以"`//`"开头,表示不论层级关系 - `//BBB`,它表示选择所有`BBB`元素 - `//DDD/BBB`,表示所有父元素是`DDD`的`BBB`元素 # 3.星号*表示选择所有由星号之前路径所定位的元素 - `/AAA/CCC/DDD/*`,它表示选择所有路径依附于`/AAA/CCC/DDD`的元素 - `/*/*/*/BBB`,它表示所有的有3个祖先元素的`BBB`元素 - `//*`,它表示选择所有的元素 # 4.方括号里的表达式 其中数字表示元素在选择集里的位置,而`last()`函数则表示选择集中的最后一个元素。特别要注意的是这里的下标是从`1`开始的,而不是`0`! - `/AAA/BBB[1]`,它表示选择`AAA`的第一个`BBB`子元素 - `/AAA/BBB[last()]`,表示选择`AAA`的最后一个`BBB`元素 # 5.属性的操作 - `//@id`,选择所有的`id`属性,注意:是把所有的`id`属性当做节点返回,而不是返回有`id`属性的节点。 ```XML <AAA> <BBB id="b1"/>返回这里的id属性节点 <BBB id="b2"/>也返回这里的id属性节点 <BBB name="bbb"/> <BBB/> </AAA> ``` - `//BBB[@id]`,选择所有有`id`属性的`BBB`节点 - `//BBB[@name]`,选择所有有`name`属性的`BBB`节点 - `//BBB[@*]`,选择所有有属性的`BBB`节点 - `//BBB[not(@*)]`,选择所有没有属性的`BBB`节点 # 6.属性值判断 - `//BBB[@id='b1']`,选择含有属性`id`且其值为’b1’的`BBB`元素 # 7.`count()`函数可以计数所选元素的个数 - `//*[count(BBB)=2]`,选择含有`2`个`BBB`子元素的元素 ```XML <AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD>返回这个元素 <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> ``` - `//*[count(*)=2]`,选择含有`2`个子元素的元素 # 8.例子: `AAA`元素下面的第`1`个`BBB`子元素下面的第2`CCC`子元素的`KKK`子元素: ```XPath /AAA/BBB[1]/CCC[2]/KKK ```
上一篇:
简单好用的hash表-----uthash
下一篇:
libxml2
0
赞
387 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
0
条评论
More...
<>