LINQ To XML : Descendants函式
LINQ To XML : Descendants函式
在LINQ To XML 的架構中,若想取得某個Element下的指定之子Element,可以呼叫Descendants這個Extension Method,如下所示:
foreach (XElement elem in doc.Elements("Customers").Descendants("Customer"))
Console.WriteLine(string.Format("Customer ID : {0}, Name : {1}, Address : {2}",
elem.Attribute("ID").Value,
elem.Attribute("Name").Value,
elem.Attribute("Address").Value));
此例所使用的XML如下:
不過,這有個特別的情況,當XML中包含了Namespace時,傳入Descendants的指定Element名稱就必須包含Namespace,舉個例來說,下面的.dbml(LINQ To SQL的定義檔)。
...........
如果用下面的程式來列舉Connection Element,會以失敗收場。
var cstr = (from s1 in doc.Descendants("Connection") select s1).First();
問題的徵結點在於.dbml中定義了Namespace,而我們於呼叫Descendants時,只傳入Element的LocalName部份所致,仔細檢視Descendants函式的宣告,你會發現其事實上接收的是一個XName型別的物件,由於XName實作了隱含轉型運運算元,所以很自然的將我們傳入的字串隱含轉型為XName,只是此
時得到的XName物件中只包含了LocalName部份,並未包含Namespace部份。
要順利取得Connection Element,我們可以用下面的程式碼來達成。
var cstr = (from s1 in doc.Descendants() where s1.Name.LocalName == "Connection"select s1).First();
此例中我們以未帶引數的Descendants函式來取得所有子Element,並一一比對其LocalName,忽略掉Namespace。
另一個手法是直接以Root Element的Namespace來疊加LocalName,如下所示:
var cstr = (from s1 in doc.Descendants(doc.Root.Name.Namespace+"Connection") select s1).First();
此手法的缺點是,欲取得的Element之Namespace必須與Root Element相同。
詳細出處參考:http://www.itqun.net/content-detail/140097_2.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-630025/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LINQ系列:LINQ to XML操作XML
- LINQ系列:LINQ to SQL Transact-SQL函式SQL函式
- LINQ系列:LINQ to XML查詢XML
- LINQ to SQL 中可以使用的LINQ函式SQL函式
- C# 之 Linq to XmlC#XML
- C#基礎系列:Linq to Xml讀寫xmlC#XML
- XML DOM 載入函式概述XML函式
- Linq to xml 查詢所有的子節點XML
- LINQ讀取簡單的XML資料XML
- static函式塊中如何呼叫外部xml引數?函式XML
- [go-linq]-Go的.NET LINQ式查詢方法Go
- Linq教程之Lambda表示式
- strip_tags()函式剝去HTML、XML以及PHP的標籤函式HTMLXMLPHP
- XML基本操作-建立(DOM和LOINQ)和LINQ查詢和儲存XML
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- 【函式式 Swift】函式式思想函式Swift
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- 第7章 IF函式 COUNTIF函式 SUMIF函式函式
- 字元函式、數字函式和日期函式字元函式
- 【函式】Oracle EXTRACT()函式與to_char() 函式函式Oracle
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- 【函式】ORACLE函式大全函式Oracle
- (譯) 函式式 JS #2: 函式!函式JS
- LINQ系列:LINQ to SQL Take/SkipSQL
- 核函式 多項式核函式 高斯核函式(常用)函式
- 函式名/函式地址/函式指標函式指標
- Linq
- 第 8 節:函式-匿名函式、遞迴函式函式遞迴
- lambda匿名函式sorted排序函式filter過濾函式map對映函式函式排序Filter
- LINQ系列:LINQ to DataSet的DataTable操作
- LINQ系列:LINQ to DataSet的DataView操作View
- LINQ系列:LINQ to SQL Where條件SQL
- LINQ系列:LINQ to SQL Concat/UnionSQL
- LINQ系列:LINQ to SQL Join連線SQL
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式