C#操作Xml的两种方式 XPath XmlDocument

来源:互联网 发布:淘宝店招和导航做全屏 编辑:程序博客网 时间:2024/04/28 08:19

现有 XML 文件,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<Company>
  <Department >
    <Name>IT Department</Name>
    <Manager>
猪头三</Manager>
    <Employees>
      <Employee>
        <ID code="001" >10001</ID>
        <Name>
西门庆
</Name>
        <Gender>
</Gender>
      </Employee>
      <Employee>
        <ID code="002">10202</ID>
        <Name>
潘金莲
</Name>
        <Gender>
</Gender>
      </Employee>
    </Employees>
  </Department>
</Company>
需要取得 Name 西门庆 Employee 节点,用XPath实现如下:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load( Path.Combine( Environment.CurrentDirectory, "demo.xml" ) );
XmlNode emp = xmlDoc.SelectSingleNode( "/Company/Department/Employees/Employee[Name='
西门庆']" );
//emp
即为 定位到的 Employee 节点 需要取得 code 002 Employee 节点,用 XPath 实现如下:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load( Path.Combine( Environment.CurrentDirectory, "demo.xml" ) );
XmlNode emp = xmlDoc.SelectSingleNode( "/Company/Department/Employees/Employee/ID[@code='002']/parent::node()" ); XPath
寻径简介

xml文件,是一种树状结构, XPath 是针对xml文件寻径的一种 pattern。以开头的xml数据为例,下面给出几个常用的情形:

取得所有的 Employee
/Company/Department/Employees/EmployeeXPath
的开头是一个斜线(/)代表绝对路径

取得所有的 Name,不分层次
//NameXPath
// 开头表示不限层次的一种模式

使用 * 匹配未知名称的元素(不能匹配未知层级)
1.
取得所有的 Employee

/Company/Department/Employees/*2. 取得Department下,包含有 Employee 作为子节点的节点

/Company/Department/*/Employee使用 [] 选择分支
XPath
中的元素索引,是从 1 开始的

我们要选择 第一个 Employee

/Company/Department/Employees/Employee[1]选择最后一个Employee

/Company/Department/Employees/Employee[last()]选择叫西门庆的Employee

/Company/Department/Employees/Employee[Name='西门庆']多路选择
XPath
| 或者 Or 进行多路选择

/Company/Deparment/Manager | /Company/Deparment/Name选择属性
XPath
中的属性,使用@开头

选择所有的 code 属性

0
0
0

 

 

原创粉丝点击