类似于XmlReader,.NET Framework也提供了一个快速、非缓存、只向前的方式动态写入XML数据的类,即XmlWriter类。完全可以将XmlWriter对象理解为XmlReader对象的对等对象。请注意XML文档不是字符串,不要试图使用操作字符串的方式操作XML。下面让我们看看XmlWriter类的重要属性和方法:
1、XmlWriter类的重要属性

属   性

说   明

Settings 返回用于创建XmlWriter对象实例的XmlWriterSettings对象
WriteState 以WriterState枚举的形式返回书写器的状态
XmlLang 获得当前的xml:lang范围;xml:lang属性为作者提供了一种可靠的方法,以区别包含在特定文档中的特定语言
XmlSpace 以XmlSpace对象的形式获得当前Xml:space的范围;XmlSpace属性允许元素向应用程序声明它们的空白是否有意义

2、XmlWriter类的重要方法

方   法

说   明

Close 关闭当前流和底层流
Create 创建并返回XmlWriter对象的一个实例
WriteAttributes 写出在XmlReader对象中当前位置上找到的所有属性
WriteAttributeString 以指定值写入属性
WriteBase64 以base64对指定的二进制字节进行编码并写出结果文本
WriteCData 写出包含指定文本的CData区域
WriteCharEntity 以十六进制字符实体引用格式写出Unicode字符
WriteChars 用于一次在一个缓冲中写入大量文本
WriteComment 写出包含指定文本的XmlComment
WriteDocType 用指定的名称和可选的属性写出DOCTYPE声明
WriteElementString 写入一个包含指定字符串值的元素
WriteEndAttribute 关闭由XmlWriter初始化的前一个WriteStartAttribute方法调用
WriteEndDoducment 关闭所有打开的元素和属性并将书写器设回开始状态
WriteEndElement 关闭由XmlWriter的WriterStartElement方法创建并打开的元素;如果该元素没有包含内容,就写入一个短结束标签“/>”;否则,将写入一个完整的结束标签
WriteEntityRef 写出一个实体引用
WriteFullEndElement 关闭打开的元素。这个方法与WriteEndElement方法的不同之处在于当要写入空元素时是否可见。这个方法通过写入完整的结束标签总是会关闭打开的标签,并特别用于在写入用于嵌入HTML脚本代码块的标签
WriteName 写出指定的名称
WriteNode 从源对象中复制所有内容至当前的书写器实例
WriteProcessingInstruction 在名称和文本之间写出一个处理指令
WriteQualifiedName 通过在给定的命名空间范围内查找前缀名来写出命名空间限定的名称
WriteRaw 不检查内容而手动写出原始标记
WriteStartAttribute 写入属性的开始
WriteStartDocument 写入XML声明
WriteStartElement 写出指定的开始标签
WriteString 写出所提供的文本内容
WriteValue 将所提供的值作为单类型值写出
WriteWhilespace 写出给定的空白

 3、XmlWriterSettings类的重要属性

属   性 说   明
CheckCharacters 获得或设置用来指示是否要执行字符检查的值
Encoding 获得或设置以Encoding对象的形式使用的文本编码
Indent 获得或设置用来指示是否缩排元素的布尔值
IndentChars 获得或设置在缩排时使用的字符串
NewLineChars 获得或设置用于换行的字符串
NewLineOnAttributes 获得或设置用于指示属性是否写入新行的布尔值
OmitXmlDeclaration 获得或设置用于指示是否应该写入XML声明的布尔值

4、WriteState枚举的成员
状   态 说   明
Attribute 当写入属性的时候,书写器进入这个状态
Closed 当调用Close方法并且书写器不再用于写入操作的时候,进入这个状态
Content 当写入节点内容的时候,书写器进入这个状态
Element 当写入元素的开始标签的时候,书写器进入这个状态
Error 在写入操作时提示一个错误,并阻止书写器继续操作
Prolog 书写器正在写入格式良好的XML1.0文档的前言(即用于声明元素名称、属性和数据类型有效标记的构建规则的区域)
Start 书写器处于初始状态,并等待书写器的调用


下面让我们看一个示例:
//aspx代码:
    protected void Page_Load(object sender, EventArgs e)
    
{
        
string xmlPath = Server.MapPath("~/Employee.xml");
        XmlWriterSettings setting 
= new XmlWriterSettings();
        setting.Indent 
= true;
        setting.IndentChars 
= "\t";
        
using (XmlWriter writer = XmlWriter.Create(xmlPath,setting))
        
{
            writer.WriteStartDocument(
false);
            writer.WriteComment(
"This XML file represents the details of an employee");
            writer.WriteStartElement(
"employees");
            writer.WriteStartElement(
"employee");
            writer.WriteAttributeString(
"id""1");
            writer.WriteStartElement(
"name");
            writer.WriteElementString(
"firstName""Nancy");
            writer.WriteElementString(
"lastName""lastName");
            writer.WriteEndElement();
            writer.WriteElementString(
"city""Seattle");
            writer.WriteElementString(
"state""WA");
            writer.WriteElementString(
"zipCode""98122");
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Flush();
            lblResult.Text 
= "File is written successfully!";
        }
        
    }

生成的XML文件的内容:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--This XML file represents the details of an employee-->
<employees>
    
<employee id="1">
        
<name>
            
<firstName>Nancy</firstName>
            
<lastName>lastName</lastName>
        
</name>
        
<city>Seattle</city>
        
<state>WA</state>
        
<zipCode>98122</zipCode>
    
</employee>
</employees>
posted on 2009-08-04 17:16  冬栀叶  阅读(1743)  评论(1编辑  收藏  举报