SelectSingleNode与SelectNodes的用法

用法与功能 :

SelectSingleNode

用法:SelectSingleNode(string xpath) 

功能:与 XPath 查询匹配的第一个 XmlNode;如果未找到任何匹配节点,则为 null。不应该要求将 XmlNode“实时”连接到 XML 文档。也就是说,XML

文档中的更改不会出现在 XmlNode 中,反之亦然。

SelectNodes

用法:SelectNodes(string xpath)

功能:一个 System.Xml.XmlNodeList,包含匹配 XPath 查询的节点集合。不应该要求将 XmlNodeList“实时”连接到 XML

文档。也就是说,XML 文档中的更改不会出现在 XmlNodeList 中,反之亦然

xpath

xpath是XPath表达式,用来选取节点的条件。以下以SelectSingleNode为例说明xpath的用法。

SelectSingleNode("item")表示从当前节点的子节点开始匹配结果。

SelectSingleNode("/item")表示从根节点的子节点开始匹配结果。

SelectSingleNode("//item")表示从任意位置的节点上选择名称为 item 的节点

SelectNodes(".") 选择当前节点。

SelectNodes("..") 选择当前节点的父节点。 

SelectNodes("//item[@name]") 在 SelectNodes("//item") 的基础上,增加了一个限制,就是要求拥有 name 属性。

SelectNodes("//item[@name='111']") 在 SelectNodes("//item[@name]") 的基础上,增加了一个限制,就是要求 name 属性值为 111。注意语法中有引号,如果没有引号,则表示是数字类型。对于数字类型可以使用大于号、小于号等,比如:SelectNodes("//item[@v>333]")。

SelectNodes("//item[1]") 选择第一个 item,注意是第一个,不是第二个。 还有这里是指亲兄弟间的第一个 item,也就是说:父级若有三个 item,则选择第一个;若父级第二个 item 的有两个名称同样为 item 的儿子,则第一个儿子会被选择出来;若父级第三个 item 的也有两个名称同样为 item 的儿子,则第一个儿子也会被选择出来…… 

SelectNodes("//item[last()-1]") 倒数第二个节点,同样是指亲兄弟间的倒数第二个。

SelectNodes("//item[position()<=2]") 位置为第一和第二的节点(第一个节点的 position() 为 1),同样是指亲兄弟间的位置。

SelectNodes("//@name") SelectNodes("/root/item/@name") 取 item 的 name 属性 选择 name 属性,注意这下选择的是属性,而不是节点了。用 Value 属性获取属性集合的属性值。

SelectNodes("/root/item") 根节点 root 下的 item 儿子节点。

SelectNodes("/root//item") 根节点 root 下的不管是儿子、孙子、重孙子……,只要是名称为 item 的统统选取出来。

SelectNodes("//Item[@ID='6'][@A='0']") 同时满足多个属性条件    SelectNodes("//Item[@ID='6' and(or)@A='6']") 同时满足多个属性条件

通配符

可用 * 表示任意节点名称,比如 SelectNodes("/channel/*/item"); 
用 @* 表示任意属性; 
用 node() 表示任意类型的节点; 
用 text() 表示文本类型的节点

运算符

| 表示或。SelectNodes("//item|//channel"),选择 item 或 channel 节点

 

posted on 2020-04-13 19:42  cloviaiou  阅读(213)  评论(0)    收藏  举报