日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
LINQ to XML元素概括

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

襄汾網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),襄汾網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為襄汾數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的襄汾做網(wǎng)站的公司定做!

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

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

XML文檔的元素名稱更新相比較于值更新要麻煩許多。由于XML文檔結(jié)構(gòu)是一個類樹形結(jié)構(gòu),學(xué)過數(shù)據(jù)結(jié)構(gòu)的讀者知道要更新一個樹節(jié)點的指針,最少需要三個步驟:
A. 查找目標(biāo)樹節(jié)點的父節(jié)點
B. 將先前的節(jié)點的孩子轉(zhuǎn)移到新節(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; i++)  
  6. {  
  7. // 新創(chuàng)建節(jié)點  
  8. XElement nEl = new XElement("Element");  
  9. // 轉(zhuǎn)移孩子節(jié)點  
  10. nEl.Add(itemNos.ElementAt(0).Elements());  
  11. // 替換  
  12. itemNos.ElementAt(0).ReplaceWith(nEl);  
  13. }  
  14. Console.Write(xel);  

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

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

 
 
 
  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數(shù)據(jù)分組全面描述
  5. LINQ查詢基礎(chǔ)概括

名稱欄目:LINQ to XML元素概括
網(wǎng)站路徑:http://www.5511xx.com/article/codsppj.html