c fopen可扩展标记语言(XML)是表示必须在web上传输的复杂信息的最简单方法之一。它是平台独立的,这使它成为跨不同技术(如Web、桌面和移动)共享相同数据的良好解决方案。在c#中,. net框架提供了不同的方式来读写XML数据。一些重要的是' XMLTextReader ', ' XMLSerializer ', ' XMLDocument '和语言集成查询' LINQ '到' XML '。LINQ是一组扩展c#语言查询能力的特性

什么是LINQ到XML?

LINQ to XML是一组驻留在System.Xml中的。net框架类。Linq '命名空间用于从XML文档中创建、更新、删除和查询数据,即' XDocument '类。

LINQ到XML是如何工作的?

在LINQ to XML中,就像文档对象模型(DOM)一样,在执行任何操作之前,将XML文档放入内存中。集成的LINQ用于在内存XML文档中编写查询,它返回节点或节点的子集。

要了解更多关于c# LINQ的知识,请访问Udemy.com。

创建XML使用LINQ到XML

“函数构造”是最简单的LINQ到XML方法,用于创建XML文件。在这种方法中,在' XElement '和' XAttribute '对象的构造器中使用查询到的LINQ to XML结果来创建和转换XML树。下面的代码片段演示了如何使用函数构造创建XML文档。

代码片段1,创建一个Book类:

public class Book {public int ID {get;设置;} public string Name {get;设置;} public string版本{get;设置;} public int YearOfPublish{获得;设置;}}

代码片段2,用于创建XML文档:

书[]allBooks =新书[]{新书{ID = 1,名称=“开始使用c#”,Version = " 1.2 ", YearOfPublish = 1999},新书{ID = 2,名称=“c#概论”,Version = " 2.0 ", YearOfPublish = 2004},新书{ID = 3,名称=“c#的高级功能”,Version = " 4.0 ", YearOfPublish = 2014},};XDocument document = new XDocument (new XDeclaration (" 1.0", "utf-8", "yes"), new XElement ("Books", from book in allBooks select new XElement (" book ", new XAttribute("ID", " book. ID", " book. ID"));新增XElement ("Name", book. ID)名称),新的XElement(“版本”,书。版本),新的XElement(“YOP”,书。YearOfPublish))));文档。保存(“C: / Book.xml”);

在上面的代码片段中,“Book”类对象使用从“Book”对象数组查询的结果保存到XML文档中。' XElement '表示文档的根元素或根元素的子元素,而' XAttribute '表示元素的属性。在上面的LINQ to XML代码片段中,“XDocument”的“XElement”对象(根节点“Books”)与LINQ查询的数据一起使用,创建具有属性“ID”和子节点“Name”、“Version”和“YOP”的子元素(“book”),然后使用“document”保存在“book . XML”文件中。保存的方法。下面是上述代码片段的剥离输出。

< ?XML version="1.0" encoding="utf-8" standalone="yes"?>   Getting Started with c#  1.2 1999  

更多有趣的c#教程,请访问Udemy.com。

XML使用LINQ到XML

使用LINQ to XML读取XML文档内容,首先包括在内存中加载文档,然后使用LINQ to XML的扩展方法返回一个节点集合。最后,使用LINQ查询该集合。下面的例子演示了扩展方法和LINQ查询的使用。

代码片段' 1 '

xelement xelement = xelement.load(“c:/book.xml”);IEnumerable books = XElement。元素();

代码片段' 2 '

IEnumerable  Books = (from book in XDocument。Load ("C:/ book .xml") .Descendants ("Books") select book) .ToArray ();代码片段“3”xelement xelement = xelement.load(“c:/book.xml”);Ienumable  books =(从xelement.elements的书中(“书”)(“书”),其中(int)book.element(“yop”)== 2014选择书).toarray();

在上面的代码片段' 1 '和' 2 '中,读取XML文档的所有元素。在第一个代码片段' Load '方法与' XElement '对象被调用,它返回一个根节点的文档,然后在根,一个扩展方法' Elements '的LINQ到XML被调用,它返回' XElement '集合的根的所有子元素。

在第二个代码片段中,使用LINQ查询,‘XDocument’将XML文档加载到内存中,然后调用一个扩展方法‘Descendants’,它将XML的根节点返回给查询。最后,使用' Select '关键字指定返回的元素(在本例中是所有根节点元素)。

在第三个片段中,LINQ查询用于检索在“2014”年发布的图书元素。在代码片段' 3 '的开头,一个XML文档被' XElement '对象加载,然后在LINQ查询中,一个扩展方法' Elements '返回所有名称为' Book '的元素。where关键字用于查询2014年出版的图书。在最后一行,' select '关键字将这些检索到的元素指定为查询的结果。

使用LINQ将元素插入到XML

使用LINQ到XML插入一个新元素需要将XML文档加载到内存中,然后在' XDocument '对象上执行' element '方法以获得文档的第一个元素,该元素以其名称作为参数标识。最后,需要一个' Add '方法调用返回的' XElement '对象,并使用一个新的' XElement '对象作为参数。下面的代码片段演示了在XML中插入新元素的讨论过程。

代码片段:

XDocument document = XDocument。负载(“C: / Book.xml”);文档。元素(“书”)。添加(new XElement ("Book", new XAttribute("ID", 4), new XElement ("Name", " c# for新手用户"),new XElement ("Version", "1.0"), new XElement ("YOP", 2007));文档。保存(“C: / Book.xml”);

使用LINQ到XML更新元素

要使用LINQ将XML元素更新为XML,首先使用LINQ从所有元素中查询元素属性或子元素,然后调用' XElement '或' XAttribute '的' SetValue '方法来设置一个新值。下面的例子演示了这个概念:

代码片段

文档。元素(“书”)。e => e - element ("Name"). value . ("Name")select (e => e - element ("Version")) .Single () .SetValue ("1.2");文档。保存(“C: / Book.xml”);

使用LINQ到XML删除元素

要使用LINQ To XML删除一个XML元素,需要使用' where '关键字从所有元素中查询一个元素,然后调用' XElement '的' Remove '方法来删除被查询的元素。下面的示例删除了由“ID”查询的特定图书。

代码片段:

文档。元素(“书”)。e => e. attribute ("ID"). value . name ("ID")= (4) .Select (e = > e) .Single () .Remove ();文档。保存(“C: / Book.xml”);

要了解更多关于c#的基本知识,可以在Udemy.com上学习。

c#顶级课程

面向初学者的c#。net
里克•菲利普斯
4.4 (1263)
完成c# Unity Game Developer 3D
Ben Tristem, Rick Davidson(游戏开发者)电视团队
4.7 (26808)
畅销书
c#中级:类,接口和面向对象
狂舞Hamedani
4.6 (23125)
畅销书
RPG核心战斗创造者:学习中级Unity c#编码
Ben Tristem, Rick Davidson, Sam Pattuzzi(游戏开发)电视团队
4.7 (8487)
c#高级主题:为技术面试做准备
狂舞Hamedani
4.5 (15107)
完整的c#大师级
丹尼斯•Panjuta教程。Denis Panjuta的eu
4.5 (12001)
c#和。net中的设计模式
Dmitri Nesteruk
4.4 (7102)
畅销书
学习使用c#和。net进行并行编程
Dmitri Nesteruk
4.5 (2035)
畅销书
Unity c#脚本:完成Unity游戏开发的c#betwayapp下载安装
Charger Games的Raja Biswas
4.5 (1388)
畅销书

更c#的课程

c#的学生也会学习

让你的团队。领导行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求一个演示