XPath语法

来源:互联网 发布:药店收银软件 编辑:程序博客网 时间:2024/05/22 00:19

C#中利用XmlDocument读取xml文件,经常需要用到XPath的路径表达式来选取XML文档中的节点或节点集,于是简单的查了一些资料。

以xml文档为例:


C#代码:

1.基本表达式
(1)节点名 从当前节点开始选取,选取当前节点的子节点,如 XPath = "Students" 选取当前节点下的Students子节点,选取结果为1个节点;
XPath = "Student" 选取当前节点下的Student子节点,选取结果为0个节点;
(2)/      从根开始选取,如 XPath = "/Students/Student" 选取属于根节点Students的所有Student节点,选取结果为6条
(3)//     选择文档中的节点,不考虑它们的位置,如 XPath = "//Student" 选取所有Student节点(忽略节点在文档中的位置),选取结果为6条
(4).      选取当前节点
(5)..     选取当前节点的父节点
(6)@      选取属性,如 XPath = "//@Name" 选取所有Name属性

2.谓语(Predicates)
谓语用来查找某个特定的节点或者包含某个指定的值的节点,谓语被嵌在方括号中。我的理解就是条件,一下是示例
(1)XPath = "/Students/Student[1]"    选取第一个节点
(2)XPath = "/Students/Student[last()]"    选取最后一个节点
(3)XPath = "/Students/Student[position()<5 and position()>2]"    选取第三四个节点
(4)XPath = "//Student[@Name='张三']"    选取所有姓名为"张三" 的学生节点
(5)XPath = "//Student[@Age>18]"    选取所有年龄大于18的学生节点

3.通配符
(1)*    匹配任何元素节点,如 XPath = "//*" ,选取所有元素节点,可得到7个节点(包括根节点)
(2)@*    匹配任何属性节点

4.|运算符
采用"|"运算符可以添加多个路径,如:
XPath = "//Student[@Name='张三'] | //Student[@Age='19']"  可以选取到姓名为张三和年龄为19的学生节点

以上只是对XPath的简单理解,由于长时间不用容易忘,因此写下来,以后也不用到处找了。

原创粉丝点击