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

LINQ to XML詳細(xì)描述

開發(fā) 后端
這里介紹LINQ to XML提供了為豐富并且簡(jiǎn)潔的類來實(shí)現(xiàn)對(duì)XML的操作。相對(duì)于種類繁多的DOM模型的XML類庫(kù)而言,LINQ的類使我們的學(xué)習(xí)曲線變得平滑并且還能達(dá)到相同的效果。

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

LINQ to Object

  1. MethodInfo[] methods = typeof(string).GetMethods();   
  2. var q = from t in methods   
  3. where (t.Name.Length > 15)   
  4. select t;  

LINQ to Object主要是基于.NET框架里的Lambda表達(dá)式來實(shí)現(xiàn)的,因此上面的代碼運(yùn)行結(jié)果等同于下面的代碼:

  1. MethodInfo[] methods = typeof(string).GetMethods();   
  2. var q = methods   
  3. .Where((method) => method.Name.Length > 15)   
  4. .Select((name) => name.Name);  

LINQ to XML

  1. XElement xelem = XElement.Load(@"example.xml");   
  2. // 查詢節(jié)點(diǎn)名為Item,并返回它們的PartNumber屬性值的集合   
  3. IEnumerable<string> partNos = from item in xelem.Descendants("Item")   
  4. Select (string)item.Attribute("PartNumber");   
  5. foreach (string str in partNos)   
  6. Console.WriteLine(str);  

在.NET3.5中,框架對(duì)XML的操作進(jìn)行了擴(kuò)展,這個(gè)擴(kuò)展就是LINQ to XML。在名稱空間System.Xml.LINQ下。從以上的代碼我們可以看到增加了一個(gè)新的XElement對(duì)象。我們通過XElement.Load方法來裝載XML文檔,而不是傳統(tǒng)的DOM模式XmlDocument.Load。

相比較于W3C的DOM文檔結(jié)構(gòu)來說,LINQ to XML為我們提供了一種更方便的創(chuàng)建一個(gè)XML文檔的方式


  1. XElement contacts =   
  2. new XElement("Contacts",   
  3. new XElement("Name", "Ice Lee"),   
  4. new XElement("Phone", "010-876546",   
  5. new XAttribute("Type", "Home")),   
  6. new XElement("Phone", "425-23456",   
  7. new XAttribute("Type", "Work")),   
  8. new XElement("Address",   
  9. new XElement("Street", "ZhiXinCun"),   
  10. new XElement("City", "Beijin")   
  11. )   
  12. );   
  13. 輸出結(jié)果:   
  14. <? Xml version="1.0" encoding="utf-8"?>   
  15. <Contacts>   
  16. <Name>Ice Lee</Name>   
  17. <Phone Type="Home">010-876546</Phone>   
  18. <Phone Type="Work">425-23456</Phone>   
  19. <Address>   
  20. <Street>ZhiXinCun</Street>   
  21. <City>Beijing</City>   
  22. </Address>   
  23. </Contacts>  

LINQ to XML提供了為豐富并且簡(jiǎn)潔的類來實(shí)現(xiàn)對(duì)XML的操作。相對(duì)于種類繁多的DOM模型的XML類庫(kù)而言,LINQ的類使我們的學(xué)習(xí)曲線變得平滑并且還能達(dá)到相同的效果。LINQ to XML解決了DOM模型中的幾個(gè)比較不方便的問題,如修改節(jié)點(diǎn)名字的問題;同時(shí)也拋棄了一些看起來很強(qiáng)大但是很不常用的東西,如實(shí)體和實(shí)體引用。這樣使得LINQ to XML的操作速度更快并且更方便。以下的幾個(gè)例子將展示給大家LINQ to XML如何完成節(jié)點(diǎn)名稱修改,增加和刪除的效果。

首先,我們看一下添加一個(gè)節(jié)點(diǎn)到XML中是這么樣實(shí)現(xiàn)的:

  1. XElement xelem = XElement.Load(@"example.xml");   
  2. XElement newnewXelem = new XElement("NewNode", "This is new node");   
  3. xelem.Add(newXelem);  

相當(dāng)?shù)暮?jiǎn)單,只要先生成一個(gè)XElement對(duì)象然后把它Add到當(dāng)前節(jié)點(diǎn)對(duì)象就可以了。進(jìn)一步我們仔細(xì)查看一下XElement可以添加節(jié)點(diǎn)的方法。可以看到一共有Add, AddAfterSelf, AddAnnotation, AddBeforeSelf, AddFirst這五個(gè)方法。在默認(rèn)情況下,Add的操作是將新節(jié)點(diǎn)作為被插入節(jié)點(diǎn)的***一個(gè)孩子節(jié)點(diǎn)插入的,而AddFirst正好相反。AddAfterSelf和AddBeforeSelf則是將節(jié)點(diǎn)作為兄弟節(jié)點(diǎn)插入的,這里要注意的是調(diào)用這兩個(gè)方法的時(shí)候不能以根節(jié)點(diǎn)作為被插入節(jié)點(diǎn),因?yàn)閄ML文檔規(guī)定只能有一個(gè)根節(jié)點(diǎn)。***,我們來看一下AddAnnotation這個(gè)方法。

AddAnnotation是為一個(gè)節(jié)點(diǎn)添加一個(gè)相關(guān)的評(píng)注的類對(duì)象。這個(gè)類對(duì)象可以用戶自己定義,所以通過這個(gè)方法我們可以擴(kuò)展XML文檔對(duì)象的功能,例如根據(jù)節(jié)點(diǎn)來獲取類對(duì)象的功能。下面是一段引用自msdn的代碼:

  1. public class MyAnnotation   
  2. {   
  3. private string tag;   
  4. public string Tag { get { return tag; } set { tag = value; } }   
  5. public MyAnnotation(string tag)   
  6. {   
  7. this.tag = tag;   
  8. }   
  9. }   
  10. … …   
  11. MyAnnotation ma = new MyAnnotation("T1");   
  12. XElement root = new XElement("Root", "content");   
  13. root.AddAnnotation(ma);   
  14. MyAnnotation ma2 = (MyAnnotation)root.Annotation<MyAnnotation>();  

【編輯推薦】

  1. LINQ查詢操作剖析
  2. LINQ生成字符串概述
  3. LINQ查詢語法簡(jiǎn)單描述
  4. LINQ解決方案簡(jiǎn)單概述
  5. LINQ查詢結(jié)果分析
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-09-14 16:33:55

LINQ To XML

2009-09-14 13:14:49

LINQ序列

2009-09-08 11:09:39

LINQ數(shù)據(jù)源

2009-09-24 16:19:53

Hibernate應(yīng)用

2009-09-25 14:28:40

Hibernate S

2009-11-18 11:14:49

2010-02-05 16:58:18

Android服務(wù)

2009-08-27 15:17:40

C# const變量

2009-08-26 15:53:48

C#擴(kuò)展方法

2009-09-07 15:15:43

2009-10-10 10:04:50

RHEL合法使用

2009-09-16 15:48:05

Linq修改XML文檔

2009-08-10 16:40:03

C#索引器

2010-04-09 17:45:06

Oracle索引

2009-10-15 14:59:45

網(wǎng)絡(luò)布線光纖技術(shù)

2009-09-25 11:04:32

Hibernate3實(shí)

2010-09-07 16:34:47

DB2 XML

2009-09-03 17:59:18

C#調(diào)用事件

2011-11-02 09:29:42

存儲(chǔ)虛擬化虛擬化

2009-10-13 17:16:40

VB.NET Web服
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩成年人视频在线 | 91麻豆精品国产91久久久久久久久 | 国产高清在线观看 | 黄色一级视频 | 国产线视频精品免费观看视频 | 男人的天堂在线视频 | 成年无码av片在线 | 久热国产精品 | 亚洲视频免费在线观看 | 成人不卡在线 | 免费一级片| 国产一区二区三区色淫影院 | 中文字幕在线看第二 | 伊人超碰在线 | 国产精品不卡 | 国产成人99久久亚洲综合精品 | hitomi一区二区三区精品 | 久久亚洲视频 | 亚洲在线一区二区 | 91久久精品日日躁夜夜躁国产 | 牛牛热在线视频 | 欧美日韩在线一区二区 | 成人网视频 | 狠狠入ady亚洲精品经典电影 | 国产亚洲精品精品国产亚洲综合 | 成人免费激情视频 | 欧美在线视频一区二区 | 成人国内精品久久久久一区 | 日韩欧美在线一区 | 精品国产91 | 91xxx在线观看 | 狠狠爱综合网 | 国产一二三视频在线观看 | 毛片网站在线观看视频 | 亚洲国产成人久久综合一区,久久久国产99 | 日本久久综合 | 国产99久久精品 | 日韩精品久久久 | 成人18亚洲xxoo | 日韩视频一区二区在线 | 日本特黄a级高清免费大片 国产精品久久性 |