学习心得LINQ to XML

本文从六个方面对LINQ to XML做了简单介绍,它们分别是命名空间、编程方式创建XML文档、使用LINQ查询创建XML文档等等。

公司主营业务:成都做网站、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出福海免费做网站回馈大家。

LINQ to XML可以看作是一个 “better DOM” 编程模型,可以和 System.Xml.dll 程序集中的很多成员交互。

一、命名空间

System.Xml.Linq.dll 程序集定义了三个命名空间:System.Xml.Linq, System.Xml.Schema  和 System.Xml.XPath

最核心的是 System.Xml.Linq, 定义了对应 XML 文档个方面的很多类型

 
定义XML文档类型

二、编程方式创建XML文档

以前的 .NET XML编程模型需要使用很多冗长的 DOM API,而 LINQ to XML 则完全可以用与 DOM 无关的方式与 XML 文档交互。这样不但大大减少了代码行,而且这种编程模型可以直接映射到格式良好的XML文档结构。

 
 
 
 
  1. static void CreateFunctionalXmlElement()  
  2. {  
  3. // A "functional" approach to build an  
  4. // XML element in memory.  
  5. XElement inventory =  
  6. new XElement("Inventory",  
  7. new XElement("Car", new XAttribute("ID", "1"),  
  8. new XElement("Color", "Green"),  
  9. new XElement("Make", "BMW"),  
  10. new XElement("PetName", "Stan")  
  11. )  
  12. );  
  13. // Call ToString() on our XElement.  
  14. Console.WriteLine(inventory);  

在内存中创建LINQ to XML文档

 
 
 
 
  1. static void CreateFunctionalXmlDoc(  
  2.        {  
  3.            XDocument inventoryDoc =  
  4.            new XDocument(  
  5.            new XDeclaration("1.0", "utf-8", "yes"),  
  6.            new XComment("Current Inventory of AutoLot"),  
  7.            new XElement("Inventory",  
  8.            new XElement("Car", new XAttribute("ID", "1"),  
  9.            new XElement("Color", "Green"),  
  10.            new XElement("Make", "BMW"),  
  11.            new XElement("PetName", "Stan")  
  12.            ),  
  13.            new XElement("Car", new XAttribute("ID", "2"),  
  14.            new XElement("Color", "Pink"),  
  15.            new XElement("Make", "Yugo"),  
  16.            new XElement("PetName", "Melvin")  
  17.            )  
  18.            )  
  19.            );  
  20.            // Display the document and save to disk.  
  21.            Console.WriteLine(inventoryDoc);  
  22.            inventoryDoc.Save("SimpleInventory.xml");  
  23.        } 

三、使用LINQ查询创建XML文档

 
 
 
 
  1. static void CreateXmlDocFromArray()  
  2. {  
  3. // Create an anonymous array of anonymous types.  
  4. var data = new [] {  
  5. new { PetName = "Melvin", ID = 10 },  
  6. new { PetName = "Pat", ID = 11 },  
  7. new { PetName = "Danny", ID = 12 },  
  8. new { PetName = "Clunker", ID = 13 }  
  9. };  
  10. // Now enumerate over the array to build  
  11. // an XElement.  
  12. XElement vehicles =  
  13. new XElement("Inventory",  
  14. from c in data  
  15. select new XElement("Car",  
  16. new XAttribute("ID", c.ID),  
  17. new XElement("PetName", c.PetName)  
  18. )  
  19. );  
  20. Console.WriteLine(vehicles);  

四、加载和解析LINQ to XML内容

 
 
 
 
  1. static void LoadExistingXml()  
  2.         {  
  3.             // Build an XElement from string.  
  4.             string myElement =  
  5.                                         @" '3'>  
  6.                              Yellow  
  7.                              Yugo  
  8.                             ";  
  9.             XElement newElement = XElement.Parse(myElement);  
  10.             Console.WriteLine(newElement);  
  11.             Console.WriteLine();  
  12.             // Load the SimpleInventory.xml file.  
  13.             XDocument myDoc = XDocument.Load("SimpleInventory.xml");  
  14.             Console.WriteLine(myDoc);  
  15.         } 

五、遍历内存中的LINQ to XML 文档

LINQ to XML 示例:

 
 
 
 
  1. "1.0" encoding="utf-8"?>  
  2.  
  3.    "0">  
  4.      Ford  
  5.      Blue  
  6.      Chuck  
  7.     
  8.    "1">  
  9.      VW  
  10.      Silver  
  11.      Mary  
  12.     
  13.    "2">  
  14.      Yugo  
  15.      Pink  
  16.      Gipper  
  17.     
  18.    "55">  
  19.      Ford  
  20.      Yellow  
  21.     862 CHAPTER 24 n PROGRAMMING WITH THE LINQ APIS  
  22.      Max  
  23.     
  24.    "98">  
  25.      BMW  
  26.      Black  
  27.      Zippy  
  28.     
  29.  

LINQ to XML 加载

 
 
 
 
  1. static void Main(string[] args)  
  2.         {  
  3.             Console.WriteLine("***** Fun with LINQ to XML *****\n");  
  4.             // Load the Inventory.xml document into memory.  
  5.             XElement doc = XElement.Load("Inventory.xml");  
  6.             // We will author each of these next  
  7.             PrintAllPetNames(doc);  
  8.             Console.WriteLine();  
  9.             GetAllFords(doc);  
  10.             Console.ReadLine();  
  11.         } 

LINQ to XML遍历

 
 
 
 
  1. static void PrintAllPetNames(XElement doc)  
  2. {  
  3. var petNames = from pn in doc.Descendants("PetName")  
  4. select pn.Value;  
  5. foreach (var name in petNames)  
  6. Console.WriteLine("Name: {0}", name);  

LINQ to XML查询

 
 
 
 
  1. static void GetAllFords(XElement doc)  
  2.         {  
  3.             var fords = from c in doc.Descendants("Make")  
  4.                         where c.Value == "Ford" 
  5.                         select c;  
  6.             foreach (var f in fords)  
  7.                 Console.WriteLine("Name: {0}", f);  
  8.         } 

六、修改LINQ to XML 文档

 
 
 
 
  1. static void AddNewElements(XElement doc)  
  2. {  
  3. // Add 5 new purple Fords to the incoming document.  
  4. for (int i = 0; i < 5; i++)  
  5. {  
  6. // Create a new XElement  
  7. XElement newCar =  
  8. new XElement("Car", new XAttribute("ID", i + 1000),  
  9. new XElement("Color", "Green"),  
  10. new XElement("Make", "Ford"),  
  11. new XElement("PetName", "")  
  12. );  
  13. // Add to doc.  
  14. doc.Add(newCar);  
  15. }  
  16. // Show the updates.  
  17. Console.WriteLine(doc);  

以上就是对LINQ to XML 的简单介绍。

【编辑推荐】

  1. 详谈Linq查询结果分析的方法
  2. 简简单单学习Linq查询语法
  3. 详细阐述Linq插入数据的操作方法
  4. 浅析Linq插入数据的实现方法
  5. 简单解决Linq多条件组合问题

分享标题:学习心得LINQ to XML
URL地址:http://www.shufengxianlan.com/qtweb/news9/304459.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联