成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LINQ to XML元素概括

開發(fā) 后端
這里介紹對于LINQ to XML元素的更新操作,關鍵就是在于查詢上面,如何有效并準確的查詢到目標元素是一個比較有挑戰(zhàn)性的問題。

在向大家詳細介紹LINQ to XML之前,首先讓大家了解下LINQ to XML元素,然后全面介紹LINQ to XML。

對于LINQ to XML元素的更新操作,關鍵就是在于查詢上面,如何有效并準確的查詢到目標元素是一個比較有挑戰(zhàn)性的問題,這就像SQL語句一樣對于同一個查詢不同的寫法和關系連接效率就不一樣,這個讀者需要自己多加練習。在上面的代碼段中,我們去查找所有屬性為PartNumber=872-AA的元素并將其更新為Hello。那么如果想操作元素值,只需將修改查詢條件為:

  1. var partNos = from item in xelem.Descendants("ProductName")  
  2. where item.Value == "Lawnmower"  

XML文檔的元素名稱更新相比較于值更新要麻煩許多。由于XML文檔結構是一個類樹形結構,學過數據結構的讀者知道要更新一個樹節(jié)點的指針,最少需要三個步驟:
A. 查找目標樹節(jié)點的父節(jié)點
B. 將先前的節(jié)點的孩子轉移到新節(jié)點
C. 將父節(jié)點的子節(jié)點替換(如果需要還要用算法重新排序樹)。

所以我們也需要用同樣的邏輯來處理XML節(jié)點的更新。那么相比較DOM文檔對象和LINQ to XML元素名稱更新操作,LINQ to XML的步驟要簡單許多。

  1. XElement xel = XElement.Load(@"example.xml");  
  2. var itemNos = from item in xel.Descendants("Item")  
  3. select item;  
  4. int n = itemNos.Count();  
  5. for (int i=0; i<n; i++)  
  6. {  
  7. // 新創(chuàng)建節(jié)點  
  8. XElement nEl = new XElement("Element");  
  9. // 轉移孩子節(jié)點  
  10. nEl.Add(itemNos.ElementAt(0).Elements());  
  11. // 替換  
  12. itemNos.ElementAt(0).ReplaceWith(nEl);  
  13. }  
  14. Console.Write(xel);  

上面的代碼是將所有名稱為Item的元素替換成名稱為Element。細心的讀者可以看到我在for循環(huán)中獲取itemNos的孩子都使用0這個索引值,為什么呢?這是因為在枚舉器中如果前面的對象消失那么索引位置就會下移,那么當我們替換一個元素后,下一個元素的索引自動變?yōu)?,所以我們只要循環(huán)指定次數就可以遍歷所有元素來。這也是為什么不用foreach的原因。那么我們進一步的出思考XML名稱替換這個問題。我們會發(fā)現LINQ to XML的XElement類提供了4個方法用來支持該功能:ReplaceAll, ReplaceAttributes, ReplaceNodes和ReplaceWith。這四個方法除了ReplaceWith是操作本元素以為,其他的都是操作元素的孩子或是屬性內容。這里提供的好處是如果我們想遍歷替換操作,就不必去重復的查詢目標元素。

最后,我們討論一下如何利用LINQ to XML來刪除一個元素。對于類樹形結構的數據來說,刪除一個元素意味著兩種情況:一、刪除本節(jié)點和其所有子節(jié)點;二、只刪除本節(jié)點。而在刪除節(jié)點之前,我們需要先定位到目標節(jié)點,所以要先進行查詢操作:

  1. XElement xelem = XElement.Load(@"example.xml");  
  2. var partNos = from item in xelem.Descendants("Item")  
  3. where item.Attributes("PartNumber").Single().Value == "872-AA"  
  4. select item;  
  5. partNos.Remove();  
  6. Console.Write(xelem);  

【編輯推薦】

  1. LINQ Customers類概括
  2. LINQ查詢操作全面分析
  3. LINQ to SQL的Table剖析
  4. Linq數據分組全面描述
  5. LINQ查詢基礎概括
責任編輯:佚名 來源: 新浪博客
相關推薦

2009-09-16 16:55:07

LINQ to XML

2009-09-14 16:51:33

LINQ XML樹加載

2009-09-15 13:59:18

LINQ to Dat

2009-09-16 10:27:35

LINQ Custom

2009-09-16 10:08:06

LINQ查詢

2009-09-15 17:07:24

Linq To SQL

2009-09-16 17:33:16

LINQ TO SQL

2009-09-09 15:10:35

LINQ查詢句法

2009-09-15 16:09:12

LINQ進行查詢

2009-09-18 15:15:12

LINQ to SQL

2009-09-14 15:37:06

LINQ映射數據庫

2009-09-15 15:18:00

Linq Lambda

2009-09-18 14:07:51

LINQ to SQL

2011-07-22 08:43:08

XML

2009-09-15 17:30:00

Linq Lambda

2009-09-17 13:54:26

LINQ to XML

2009-09-17 13:30:32

LINQ to XML

2009-01-04 16:58:48

LINQ to XMLLINQXML

2009-09-14 16:41:23

LINQ To XML

2009-09-16 16:59:05

LINQ to XML
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人欧美一区二区三区在线观看 | 国产探花在线精品一区二区 | 97caoporn国产免费人人 | 一级毛片视频在线 | 午夜视频网站 | 日韩国产免费观看 | 国产精品久久网 | 免费在线观看黄色av | 另类在线 | 99精品久久99久久久久 | 国产真实精品久久二三区 | 欧美精品网| 国产欧美一区二区三区久久人妖 | 九九久久国产精品 | 欧美性jizz18性欧美 | 91久久久久久久久久久久久 | 9久9久9久女女女九九九一九 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 日韩在线一区视频 | 中文字幕日韩av | 国产精品成人国产乱一区 | 亚洲欧美综合 | 久久久一区二区三区 | 中文字幕高清免费日韩视频在线 | 亚洲精品女优 | 青青久久久 | 欧美日韩一区二区在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 日韩欧美在 | 超碰在线观看97 | 久久中文字幕一区 | 日韩av中文 | 97精品超碰一区二区三区 | 精品av| 国产精品1区2区 | 精品国产精品三级精品av网址 | 欧美国产日韩成人 | 视频一区在线 | 精品欧美一区二区在线观看视频 | 亚洲第一区国产精品 | 中文字幕一区二区三区乱码在线 |