C#读写XML(一)(转)
在这篇文章中,我将给出这样的一个类的使用示例,这个类就是XmlTextWriter类。
XmlTextWriter类允许你将XML写到一个文件中去。这个类包含了很多方法和属性,使用这些属性和方法可以使你更容易地处理XML。为了使用这个类,你必须首先创建一个新的XmlTextWriter对象,然后你可以将XML片断加入到这个对象中。这个类中包含了不少的方法用于将各种类型的XML元素添加到XML文件中。
下表给出了这些方法的名字和描述情况:
方法描述:
WriteStartDocument书写版本为“1.0”的 XML 声明
WriteEndDocument关闭任何打开的元素或属性
Close关闭流
WriteDocType写出具有指定名称和可选属性的 DOCTYPE 声明
WriteStartElement写出指定的开始标记
WriteEndElement关闭一个元素
WriteFullEndElement关闭一个元素,并且总是写入完整的结束标记
WriteElementString写出包含字符串值的元素
WriteStartAttribute书写属性的起始内容
WriteEndAttribute关闭上一个 WriteStartAttribute 调用
WriteRaw手动书写原始标记
WriteString书写一个字符串
WriteAttributeString出具有指定值的属性
WriteCData写出包含指定文本的 <![CDATA[...]]> 块
WriteComment写出包含指定文本的注释 <!--...-->
WriteWhiteSpace写出给定的空白
WriteProcessingInstructi
下面我们将给出一个例子,在这个例子中,我们将先创建一个文档,添加一些元素,然后关闭这个文档。添加了元素后你还可以添加子元素,属性和其他内容。
下面的代码就是这样的一个例子,它创建了一个文件名为title的XML文件。
using System; using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlTextWriter writer = new XmlTextWriter("titles.xml", null);
//写入根元素
//加入子元素
writer.WriteElementString("title", "Unreal Tournament 2003");
writer.WriteElementString("title", "C&C: Renegade");
writer.WriteElementString("title", "Dr. Seuss's ABC");
//关闭根元素,并书写结束标签
writer.WriteEndElement();
//将XML写入文件并且关闭
XmlTextWriter writer.Close();
}
}
如果你编译并且执行上面的代码,你将创建这个XML文件,文件中包含如下内容:
<items>
<title>Unreal Tournament 2003</title>
<title> C&C: Renegade</title>
<title>Dr. Seuss's ABC </title>
</items>
上面的代码创建了一个名为writer的XmlTextWriter对象。当这个对象被创建时,它被关联到一个名为titles.xml的文件。接着,程序创建了一个叫做items的根属性,WriteStartElement方法创建了这个属性的开始标签。接下来,程序调用了WriteElementString方法创建了三个子元素。从上面的代码你还可以看到,这个方法使用第一个参数(在上面的程序中是title)作为元素的标签;使用第二个参数作为元素的值。 当你添加了所有的元素后,你需要关闭根元素。这时你可以调用WriteEndElement方法关闭那个最近被打开的元素;在本例中,这个最近被打开的元 素就是根元素。当所有的数据都已经写好,根元素也已经关闭时,你可以将信息传送给你的XmlTextWriter。这意味着这时候你可以调用Close方 法关闭它了。
上面的代码相对十分的简单,下面我们看一个使用了XmlTextWriter类中更多方法,功能更加完善的例子。
using System; using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlTextWriter writer = new XmlTextWriter("myMedia.xml", null);
//使用自动缩进便于阅读
writer.Formatting = Formatting.Indented;
//书写根元素
writer.WriteStartElement("items");
//开始一个元素
writer.WriteStartElement("item");
//向先前创建的元素中添加一个属性
writer.WriteAttributeString("rating", "R");
//添加子元素
writer.WriteElementString("title", "The Matrix");
writer.WriteElementString("format", "DVD");
//关闭item元素
writer.WriteEndElement();
// 关闭元素
//在节点间添加一些空格
writer.WriteWhitespace("n");
//使用原始字符串书写第二个元素
writer.WriteRaw("<item>" + "<title>BloodWake</title>" + "<format>XBox</format>" + "</item>");
//使用格式化的字符串书写第三个元素
writer.WriteRaw("n <item>n" + " <title>Unreal Tournament 2003</title>n" + " <format>CD</format>n" + " </item>n");
// 关闭根元素
writer.WriteFullEndElement();
//将XML写入文件并关闭
writer writer.Close(); }
}
上面代码编译运行后将得到myMedia.xml文件,文件的内容为:
<items>
<item rating="R">
</item>
<item>
</item>
<item>
</item>
</items>
上面代码中的注释说明了这个程序的功能是如何实现的。
需要记住的一件事是:当调用方法开始一个操作时,你需要在程序的合适的地方调用方法结束这个操作。
例如,你调用了StartElement,你就必须调用EndElement关闭元素;当然在这两个调用之间你也可以加入一个子元素。无论你何时调用EndElement方法,它总是关闭最近使用StartElement方法打开的那个元素(这和栈的工作方式很相似)。
使用XmlTextWriter十分的容易,不过我还是建议你自己动手试试这些代码和方法。你试过以后会发现这些代码能够很容易地集成到你的程序中。
你还应该记住,XmlTextWriter仅仅是.NET提供的众多XML类中的一个。和XmlTextWriter一样,其他的XML类也十分的容易使用。
合乎自然而生生不息。。。