C#操作Xml的兩種方式 XPath XmlDocument XmlNodeList

來源:互聯網
上載者:User
現有 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/Employee

XPath的開頭是一個斜線(/)代表絕對路徑

  • 取得所有的 Name,不分層次
//Name

XPath 以 // 開頭表示不限層次的一種模式

  • 使用 * 匹配未知名稱的元素(不能匹配未知層級)

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 屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.