我相信很多从事.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.创建定名空间