使用XmlWriter写Xml

12 篇文章 0 订阅

假定创建了XmlWriter的实例变量xmlWriter,下文中将使用此实例变量写Xml

1.如何使用XmlWriter写Xml文档声明

// WriteStartDocument方法可以接受一个bool参数(表示standalone,是否为独立文档)或者不指定参数standalone保持默认值
xmlWriter.WriteStartDocument( false | true );

注意在使用WriteStartDocument方法后最好调用xmlWrite.WriteEndDocument()方法来关闭所有可能未关闭标签
2.如何使用XmlWriter写xml节点以及属性

//写节点
xmlWriter.WriteStartElement( "cat" );
//给节点添加属性
xmlWriter.WriteAttributeString( "color" , "white" );
//给节点内部添加文本
xmlWriter.WriteString( "I'm a cat" );
xmlWriter.WriteEndElement();

或者通过WriteElementString(string,string)方法写xml节点同时写下节点值,如下

//通过WriteElementString可以添加一个节点同时添加节点内容
xmlWriter.WriteElementString( "pig" , "pig is great" );

3.如何写CData

xmlWriter.WriteStartElement( "dog" );
//写CData
xmlWriter.WriteCData( "<strong>dog is dog</strong>" );
xmlWriter.WriteEndElement();

4.如何使用XmlWriter添加注释

xmlWriter.WriteComment( "this is an example writed by 玉开技术博客 http://www.cnblogs.com/yukaizhao " );

5.如何设置XmlWriter的输出格式,解决输出UTF-16问题
设置xml输出格式,需要通过XmlWriterSettings类,如下代码

XmlWriterSettings settings = new  XmlWriterSettings();
//要求缩进
settings.Indent = true ;
//注意如果不设置encoding默认将输出utf-16
//注意这儿不能直接用Encoding.UTF8如果用Encoding.UTF8将在输出文本的最前面添加4个字节的非xml内容
settings.Encoding = new  UTF8Encoding( false );
                 
//设置换行符
settings.NewLineChars = Environment.NewLine;

完整的代码示例如下:

/*玉开技术博客 http://www.cnblogs.com/yukaizhao */
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.IO;
using  System.Xml;
 
namespace  UseXmlWriter
{
     class  Program
     {
         static  void  Main( string [] args)
         {
             using  (MemoryStream ms = new  MemoryStream())
             {
                 XmlWriterSettings settings = new  XmlWriterSettings();
                 //要求缩进
                 settings.Indent = true ;
                 //注意如果不设置encoding默认将输出utf-16
                 //注意这儿不能直接用Encoding.UTF8如果用Encoding.UTF8将在输出文本的最前面添加4个字节的非xml内容
                 settings.Encoding = new  UTF8Encoding( false );
                 
                 //设置换行符
                 settings.NewLineChars = Environment.NewLine;
 
                 using  (XmlWriter xmlWriter = XmlWriter.Create(ms, settings))
                 {
 
                     //写xml文件开始<?xml version="1.0" encoding="utf-8" ?>
                     xmlWriter.WriteStartDocument( false );
                     //写根节点
                     xmlWriter.WriteStartElement( "root" );
                     //写字节点
                     xmlWriter.WriteStartElement( "cat" );
                     //给节点添加属性
                     xmlWriter.WriteAttributeString( "color" , "white" );
                     //给节点内部添加文本
                     xmlWriter.WriteString( "I'm a cat" );
                     xmlWriter.WriteEndElement();
 
 
                     //通过WriteElementString可以添加一个节点同时添加节点内容
                     xmlWriter.WriteElementString( "pig" , "pig is great" );
 
 
                     xmlWriter.WriteStartElement( "dog" );
                     //写CData
                     xmlWriter.WriteCData( "<strong>dog is dog</strong>" );
                     xmlWriter.WriteEndElement();
 
                     xmlWriter.WriteComment( "this is an example writed by 玉开技术博客 http://www.cnblogs.com/yukaizhao " );
 
                     xmlWriter.WriteEndElement();
                     xmlWriter.WriteEndDocument();
 
                 }
 
                 //将xml内容输出到控制台中
                 string  xml = Encoding.UTF8.GetString(ms.ToArray());
                 Console.WriteLine(xml);
             }
             Console.Read();
 
         }
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值