xa )); xele.Save(Path); } 我们依然可以看到熟悉的语法

时间:2022-04-19 07:27:49

我相信很多从事.NET开发的,在.NET 3.5之前操纵XML会对照麻烦,但是在此之后呈现了Linq to Xml,现在天的主人公就是Linq to Xml,空话不久不多说,直接进入主题。


一、生成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中。

生存之后的功效如下:


代码如下:


<?xml version=”1.0″ encoding=”utf-8″?>

<Root>

<item>1</item>

<item>2</item>

<item>3</item>

<item>4</item>

<item>5</item>

<item>6</item>

<item>7</item>

<item>8</item>

<item>9</item>

<item>10</item>

</Root>


4.创建属性

有时我们不想创建新的子项去生存数据,而是使用属性的方法去生存。理所该当,linq to xml一样也撑持这个成果,下面我们可以通过简单的语句去实现它。

代码如下所示:


代码如下:


/// <summary>

/// 创建属性

/// </summary>

public static void CreteAttribute()

{

XAttribute xa = new XAttribute(“V2”, “2”);

XElement xele = new XElement(

“Root”,

new XElement(“Item”,

new XAttribute(“V1”, “1”),

xa

));

xele.Save(Path);

}

我们依然可以看到熟悉的语法,这里我们操作了XAttribute去创建一个属性,并添加到XElement中。

最终的功效如下:


代码如下:


<?xml version=”1.0″ encoding=”utf-8″?>

<Root>

<Item V1=”1″ V2=”2″ />

</Root>


5.创建定名空间