当前位置:首页 > Windows程序 > 正文

C#中的Linq to Xml详解

2024-03-31 Windows程序

这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml、查询并修改xml、监听xml事件、处理xml流等内容,需要的朋友可以参考下

操作之前,需要引入 程序集和命名空间 System.Xml.Linq; 

一、生成Xml

为了能够在结构有一定的组织,笔者建议大家新建一个控制台项目,并且新建一个CreateXml类(以下部分都属于该类中)。

并在其中写入以下属性:

代码如下:


public static String Path { get { String path = String.Format("{0}\\test.xml", Environment.CurrentDirectory); return path; } }

 

这句代码很好理解,就是为了下面我们示例的时候可以将xml保存到当前程序的运行路径下。

(以下的示例中不会包含Main方法中的写法,因为Main中仅仅只要调用该静态方法即可。)

1.创建简单的Xml

首先我们先练练手,创建一个简单的Xml并保存到一个文件中。

 

代码如下:


/// <summary> /// 创建简单的xml并保存 /// </summary> public static void CreateElement() { XDocument xdoc = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XElement("root", new XElement("item", "1"), new XElement("item", "2") )); xdoc.Save(Path); }

 

很多学习过XML的人可以从结构就能够猜测出最终的xml的组织,而这也是linq to xml的优点之一。这句代码首先创建一个xml文档,并设置该xml的版本为1.0,,

采用utf-8编码,后面的yes表示该xml是独立的。下面就开始创建每个节点的,首先是Root节点,然后在Root节点中添加两个Item节点。

最终生成的Xml如下所示:

代码如下:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <root> <item>1</item> <item>2</item> </root>

 



2.创建注释

当xml有很多项时,我们就需要利用注释加以区别,通过linq to xml我们一样可以在其中添加注释。

 代码如下:

/// <summary> /// 创建注释 /// </summary> public static void CreateComment() { XDocument doc = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XComment("提示"), new XElement("item", "asd") ); doc.Save(Path); }

 



这里我们直接在版本信息的后面添加了一条注释。

最终的结果如下所示:

代码如下:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <!--提示--> <item>asd</item>

 



3.根据对象创建xml

很多时候我们都会将数组之类的类型转换成xml以便保存进永久性存储介质中,所以下面我们也简单的举了一个例子,将数组转换成xml。

代码如下所示:

代码如下:

/// <summary> /// 根据对象创建xml并保存 /// </summary> public static void CreateElementByObjects() { var s = Enumerable.Range(1, 10); XElement xele = new XElement( "Root", from item in s select new XElement("item", item.ToString()) ); xele.Save(Path); }

 



一开始的代码 var s = Enumerable.Radge(1,10)是从1开始递增,生成含有10项的数组,以便后面我们进行添加,有了这个数组之后,

我们通过简单的linq语句将数组转换成xml,添加到Root中。

保存之后的结果如下:

代码如下:

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/47756.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494607访问次数
  • 建站天数
  • 友情链接