c# 操作Xml中SelectSingleNode方法中的xpath用法

    1. 常见的XML数据类型有:Element, Attribute,Comment, Text.

     Element, 指形如<Name>Tom<Name>的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.

   Attribute, 指在<Employee >中的粗体部分。

  Comment,指形如:<!-- my comment --> 的节点。

  Text,指在<Name>Tom<Name>的粗体部分。

   在XML中,可以用XmlNode对象来参照各种XML数据类型。

  2.1查询已知绝对路径的节点(集)

objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee”) 

//或者 

   objNodeobjNodeList = objNode.SelectNodes(“/Company/Department/Employees/Employee”) 

//或者

objNodeList = objDoc.SelectNodes(“///Employee”) 

  以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点    返回 Nothing。例如:

 objNodeobjNode = objNode.SelectSingleNode(“/Company/Department/Employees/Employee”) 

   If (!(objNode is Nothing))
{
   // Do process
}

2.2 查询已知相对路径的节点(集)

  可使用类似于文件路径的相对路径的方式来查询XML的数据

objNode = objDoc.SelectSingleNode(“Company/Department”) 

   objNodeobjNodeList = objNode.SelectNodes(“../Department) 

   objNodeobjNode = objNode.SelectNode(“Employees/Employee”) 

2.3 查询已知元素名的节点(集)

在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:

objNodeList = objDoc.SelectNodes(“Company//Employee”)

2.4 查询属性(attribute)节点

以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:

objNodeList = objDoc.SelectNodes(”)

objNodeList = objDoc.SelectNodes(”)

2.5 查询Text节点

使用text()来获取Text节点。

objNode = objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”)

2.6 查询特定条件的节点

使用[]符号来查询特定条件的节点。例如:

a. 返回id号为 10102的Employee节点

objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”)

b. 返回Name为Zhang Qi的Name 节点

objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’Zhang Qi’]”)

c. 返回部门含有职员22345的部门名称节点

objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id=‘22345‘]/Department_Name")

2.7 查询多重模式的节点

使用 | 符号可以获得多重模式的节点。例如:

objNodeList = objDoc.SelectNodes(“Company/Department/Department_Name | Company/Department/Manager”)

2.8 查询任意子节点

使用*符号可以返回当前节点的所有子节点。

objNodeList = objDoc.SelectNodes(“Company/*/Manager)

或者

objNodeobjNodeList = objNode.ChildNodes

3 XML数据的编辑

3.1 增加一个元素的属性(attribute)节点

Dim objNodeAttr As XmlNode 

   objNodeAttr = objDoc.CreateAttribute("id", Nothing) 

   objNodeAttr.InnerXml = "101" 

   objNode.Attributes.Append(objNodeAttr)

3.2 删除一个元素的属性

objNode.Attributes.Remove(objNodeAttr)

3.3 增加一个子元素(Element)

Dim objNodeChild As XmlNode 

   objNodeChild = objDoc.CreateElement(Nothing, "ID", Nothing) 

   objNodeChild.InnerXml = "101" 

   objNode.AppendChild(objNodeChild) 

3.4 删除一个子元素

objNode.RemoveChild(objNodeChild)

3.5 替换一个子元素

objNOde.ReplaceChild(newChild,oldChild)

  4 查询节点中的最大值。

    Xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<DocumentElement>
  <XmlTable>
    <ID>1</ID>
    <IDX />
    <RunTimes />
    <Span />
    <StartKey />
    <EndKey />
    <FilePath />
  </XmlTable>
  <XmlTable>
    <ID>2</ID>
    <IDX />
    <RunTimes />
    <Span />
    <StartKey />
    <EndKey />
    <FilePath />
  </XmlTable>
</DocumentElement>

以下代码就可取出最大的ID:

XmlDocument xml = new XmlDocument();
                //导入指定xml文件
                xml.Load(xmlFilePath);
                string xPath = "//ID[not(text() < //ID/text())]";
                string idMax = xml.SelectSingleNode(xPath).ChildNodes[0].InnerText;
时间: 2024-07-28 19:29:28

c# 操作Xml中SelectSingleNode方法中的xpath用法的相关文章

Xml中SelectSingleNode方法中的xpath用法

最常见的XML数据类型有:Element, Attribute,Comment, Text. Element, 指形如<Name>Tom<Name>的节点.它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference. Attribute, 指在<Employee >中的粗体部分. Comment,指形如:<!-- my comment --> 的节点. Tex

Flex中操作XML的E4X方法

用于处理 XML 的 E4X 方法 Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 ECMAScript for XML 规范定义了一组用于使用 XML 数据的类和功能.这些类和功能统称为 E4X.ActionScript 3.0 包含以下 E4X 类:XML.XMLList.QName 和 Namespace. E4X 类的方法.属性和运算符旨在实现以下目标: 简单 - 在可能的情况下,使用 E4X 可以更容易地编写和理解用于使用 XML 数据的代码. 一致

黄聪:C#操作xml SelectNodes,SelectSingleNode通过 xPath 定位class包含Contains的DIV

一. SelectNodes,SelectSingleNode总是返回NULL 下面以一个简单的xml为例: <?xml version="1.0"?> <message xmlns="http://www.mydomain.com/MyDataFeed" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://www.mydomain.

在Fragment中OnActivityResult方法中接收Activity中返回的值

在Fragment中OnActivityResult方法中接收Activity中返回的值 在Fragment中OnActivityResult方法中接收Activity中返回的值,有需要的朋友可以参考下. 在开发android中,有些人往往很疑惑,当一个FragmentActivity中有多个碎片的时候,如a,b,c三个碎片, 其中b中进行了操作,跳转到了新的界面D(activity).但是当D操作完后,返回值到碎片b.那么问题就来了,肯定会有人问,b是一个碎片,如何才能接收到D传过来的值呢?

ASP.NET中HttpApplication中ProcessRequest方法中执行的事件顺序;ASP.NET WebForm和MVC整体请求流程图

ASP.NET中HttpApplication中ProcessRequest方法中执行的事件顺序 1.BeginRequest  开始处理请求 2.AuthenticateRequest 授权验证请求,获取用户授权信息 3.PostAuthenticateRequest 获取成功 4.AunthorizeRequest 授权,一般来检查用户是否获得权限 5.PostAuthorizeRequest 获得授权 6.ResolveRequestCache 获取页面缓存结果(如果没有则执行) 7.Po

C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍

读取XML节点属性: XmlNode schoolNode = xmldoc.SelectSingleNode("/school"); string schoolName = schoolNode.Attributes["name"].Value; 一.SelectNodes,SelectSingleNode总是返回NULL 下面以一个简单的xml为例: <?xml version="1.0"?> <message xmlns=

解决webkit浏览器中js方法中使用window.event提示未定义的问题

这实际上是一个浏览器兼容性问题,根源百度中一大堆,简要说就是ie中event对象是全局变量,所以哪里都能使用到,但是webkit内核的浏览器中却不存在这个全局变量event,而是以一个隐式的局部变量的形式传入(后文会详说). function myfunc(param){ alert(window.event); } //ie中 <input type="button" onclick="myfunc('testie')" > //一切正常 //webk

javaz中向方法中传入变量,数据有的发生改变有的没有改变的原因

//在栈里面的数据不具备内存地址,方法运行创建,方法结束销毁.变量----也就是在栈中的基本数据 方法中的变量:    基本数据类型----变量==基本数据(8大类型)    引用数据类型----变量==内存地址                在方法中定义的变量,方法结束后都会销毁.(基本数据(8大类型)和内存地址被销毁)    in (Object    obj){        }        out(    ){        //进入的时候会创建一个与变量相同的变量(局部/成员/静态)

Android 系统menu中add方法中参数的含义!!!

menu.add的方法中的参数: 1.int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮.可以用到的方法有: removeGroup(id) setGroupCheckable(id, checkable, exclusive) setGroupEnabled(id,boolean enabled) setGroupVisible(id,visible) 2.int类型的item ID参数,代表的是项目编号.这个参数非常重要,一个i