xml写入

类似于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 >

转载于:https://www.cnblogs.com/sceo/archive/2009/08/04/1538798.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值