C#高级编程之处理XML-连载八

时间:2010年04月12日 点击:97

23.5.3  使用XmlTextWriter

XmlTextWriter类可以把XML写入一个流、文件或TextWriter对象中。与XmlTextReader一样,XmlTextWriter类以只向前、未缓存的方式进行写入。XmlTextWriter的可配置性很高,可以指定是否缩进文本、缩进量、在属性值中使用什么引号以及是否支持命名空间等信息。

下面是一个简单的示例,说明了如何使用XmlTextWriter类,这段代码在XMLWriterSample1文件夹中:

private void button1_Click(object sender, System.EventArgs e)

{

   // change to match your path structure

   string fileFTEL="..\\..\\..\\booknew.xml";

   // create the XmlTextWriter

   XmlTextWriter tw=new XmlTextWriter(fileName,null);

   // set the formatting to indented

   tw.Formatting=Formatting.Indented;

   tw.WriteStartDocument();

   // Start creating elements and attributes

   tw.WriteStartElement("book");

   tw.WriteAttributeString("genre","Mystery");

   tw.WriteAttributeString("publicationdate","2001");

   tw.WriteAttributeString("ISBN","123456789");

   tw.WriteElementString("title","The Case of the Missing Cookie");

   tw.WriteStartElement("author");

   tw.WriteElementString("name","Cookie Monster");

   tw.WriteEndElement();

   tw.WriteElementString("price","9.99");

   tw.WriteEndElement();

   tw.WriteEndDocument();

   //clean up

   tw.Flush();

   tw.Close();

}

这里编写一个新的XML文件booknew.xml,并给一本新书添加数据。注意XmlTextWriter会用新文件重写旧文件。本章的后面会把一个新元素或节点插入到现有的文档中,使用FileStream对象作为参数,实例化XmlTextWriter对象。还可以把一个带有文件名和路径的字符串或者一个基于TextWriter的对象作为参数。接着,设置Indenting属性,之后,子节点就会自动从父节点缩进。WriteStartDocument()会添加文档声明。下面开始写入数据。首先是book元素,添加genrepublicationdate ISBN属性。然后写入titleauthorprice元素,注意author元素有一个子元素名。

单击按钮,生成booknew.xml文件:

<?xml version="1.0"?>

<book genre="Mystery" publicationdate="2001" ISBN="123456789">

  <title>The Case of the Missing Cookie</title>

  <author>

    <name>Cookie Monster</name>

  </author>

  <price>9.99</price>

</book>

在开始和结束写入元素和属性时,要注意控制元素的嵌套。在给authors元素添加name子元素时,就可以看到这种嵌套。注意WriteStartElement() WriteEndElement()方法调用是如何安排的,以及它们是如何在输出文件中生成嵌套的元素的。

除了WriteElementString () WriteAttributeString()方法外,还有其他几个专用的写入方法。WriteCData()可以输出一个Cdata部分(<!CDATA[…])>),把要写入的文本作为一个参数。WriteComment()以正确的XML格式写入注释。WriteChars()写入字符缓冲区的内容,其工作方式类似于前面的ReadChars(),它们都使用相同类型的参数。WriteChar()需要一个缓冲区(一个字符数组)、写入的起始位置(一个整数)和要写入的字符个数(一个整数)

使用基于XmlReader XmlWriter的类读写XML是非常灵活的,使用起来也很简单。下面介绍如何使用System.Xml命名空间中XmlDocument XmlNode类执行DOM

更多DotNet好文章www.zdexe.com

赞助商链接

热门内容

相关内容

联系我们

联系方式