源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

解析XPath语法之在C#中使用XPath的示例详解

  • 时间:2020-02-25 10:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:解析XPath语法之在C#中使用XPath的示例详解
XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。 [b]示例Xml: [/b]
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="utf-8" ?> <pets>   <cat color="black" weight="10">     <price>100</price>     <desc>this is a black cat</desc>   </cat>   <cat color="white" weight="9">     <price>80</price>     <desc>this is a white cat</desc>   </cat>   <cat color="yellow" weight="15">     <price>80</price>     <desc>this is a yellow cat</desc>   </cat>     <dog color="black" weight="10">     <price>100</price>     <desc>this is a black dog</desc>   </dog>   <dog color="white" weight="9">     <price>80</price>     <desc>this is a white dog</desc>   </dog>   <dog color="yellow" weight="15">     <price>80</price>     <desc>this is a yellow dog</desc>   </dog> </pets>
XPath的语法: [b]1. XPath中的符号 [/b]

[b]符号

[/b]

[b]说明

[/b]

[b]示例

[/b]

[b]示例说明

[/b]

[b]/

[/b]

表示从根节点开始选择

/pets

选择根节点pets

表示节点和子节点之间的间隔符

/pets/dog

选择pets节点下的dog节点

[b]//xx

[/b]

表示从整个xml文档中查找,而不考虑当前节点位置

//price

选择文档中所有的price节点

[b].

[/b]

单个英文半角句点表示选择当前节点

/pets/.

选择pets节点

[b]..

[/b]

双点,表示选择父节点

/pets/dog[0]/..

表示pets节点,也就是第一个dog节点的父节点

[b]@xx

[/b]

表示选择属性

//dog/@color

表示选择所有dog节点的color属性集合

[b][…]

[/b]

中括号表示选择条件,括号内为条件

//dog[@color='white']

所有colorwhitedog节点

//dog[/price<100]

所有price字节点值小于100dog节点

中括号内数字为节点索引,类似c#等语言中的数组,数组下标是从1开始的

//dog[1]

1dog节点

//dog[last()]

最后一个dog节点,last()xPath内置函数

[b]|

[/b]

单竖杠表示合并节点结合

//dog[@color='white'] | //cat[@color='white']

color属性为whitedog节点和color属性为whitecat节点

[b]*

[/b]

星号表示任何名字的节点或者属性

//dog/*

表示dog节点的所有子节点

//dog/@*

表示dog节点的所有属性节点
[b]2. XPath数学运算符 [/b]+ 加号表示加 - 表示数字相减 * 表示乘以 div 表示除以,这里数学上的除号/已经被用作节点之间分隔符了 mod 表示取余 [b]3. XPath逻辑运算符 [/b]= 等于,相当于c#中的 == != 不等于 > 大于 >= 大于等于 < 小于 <= 小于等于 and 并且 与关系 or 或者 或关系 [b]4. XPath Axes 从字面翻译这个是XPath轴的意思,但根据我的理解这个翻译成XPath节点关系运算关键字更合适,就是一组关键字加上::双冒号表示和当前节点有关系的一个或者一组节点. [/b]使用语法: axisname::nodetest[predicate] 即轴名字::节点名字[取节点条件] 具体说明如下:

关键字

说明

示例

示例说明

ancestor

当前节点的父祖节点

ancestor::pig

当前节点的祖先节点中的pig节点

ancestor-or-self

当前节点以及其父祖节点

ancestor::pig

 

attribute

当前节点的所有属性

attribute::weight

相当于@weightattribute::@是等价的

child

当前节点的所有字节点

child::*[name()!='price']

选择名字不是price的子节点

descendant

子孙节点

descendant::*[@*]

有属性的子孙节点

descendant-or-self

  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部