——此文章摘自《C#高级编程(第
版)》定价
元 特价
元 购买
XmlTextWriter类可以把XML写入一个流文件或TextWriter对象中与XmlTextReader一样XmlTextWriter类以只向前未缓存的方式进行写入XmlTextWriter的可配置性很高可以指定是否缩进文本缩进量在属性值中使用什么引号以及是否支持命名空间等信息
下面是一个简单的示例说明了如何使用XmlTextWriter类这段代码在XMLWriterSample文件夹中
private void button_Click(object sender SystemEventArgs e)
{
// change to match your path structure
string fileFTEL=\\\\\\booknewxml;
// create the XmlTextWriter
XmlTextWriter tw=new XmlTextWriter(fileNamenull);
// set the formatting to indented
twFormatting=FormattingIndented;
twWriteStartDocument();
// Start creating elements and attributes
twWriteStartElement(book);
twWriteAttributeString(genreMystery);
twWriteAttributeString(publicationdate);
twWriteAttributeString(ISBN);
twWriteElementString(titleThe Case of the Missing Cookie);
twWriteStartElement(author);
twWriteElementString(nameCookie Monster);
twWriteEndElement();
twWriteElementString(price);
twWriteEndElement();
twWriteEndDocument();
//clean up
twFlush();
twClose();
}
这里编写一个新的XML文件booknewxml并给一本新书添加数据注意XmlTextWriter会用新文件重写旧文件本章的后面会把一个新元素或节点插入到现有的文档中使用FileStream对象作为参数实例化XmlTextWriter对象还可以把一个带有文件名和路径的字符串或者一个基于TextWriter的对象作为参数接着设置Indenting属性之后子节点就会自动从父节点缩进WriteStartDocument()会添加文档声明下面开始写入数据首先是book元素添加genrepublicationdate 和 ISBN属性然后写入titleauthor和price元素注意author元素有一个子元素名
单击按钮生成booknewxml文件
<?xml version=?>
<book genre=Mystery publicationdate= ISBN=>
<title>The Case of the Missing Cookie</title>
<author>
<name>Cookie Monster</name>
</author>
<price></price>
</book>
在开始和结束写入元素和属性时要注意控制元素的嵌套在给authors元素添加name子元素时就可以看到这种嵌套注意WriteStartElement()和 WriteEndElement()方法调用是如何安排的以及它们是如何在输出文件中生成嵌套的元素的
除了WriteElementString ()和 WriteAttributeString()方法外还有其他几个专用的写入方法WriteCData()可以输出一个Cdata部分(<!CDATA[…])>)把要写入的文本作为一个参数WriteComment()以正确的XML格式写入注释WriteChars()写入字符缓沖区的内容其工作方式类似于前面的ReadChars()它们都使用相同类型的参数WriteChar()需要一个缓沖区(一个字符数组)写入的起始位置(一个整数)和要写入的字符个数(一个整数)
使用基于XmlReader 和 XmlWriter的类读写XML是非常灵活的使用起来也很简单下面介绍如何使用SystemXml命名空间中XmlDocument 和 XmlNode类执行DOM