現有 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資料為例,下面給出幾個常用的情形:
/Company/Department/Employees/Employee
XPath的開頭是一個斜線(/)代表絕對路徑
//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 屬性