当前位置:编程学习 > XML/UML >>

使用XmlWriter写Xml

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

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

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

xmlWriter.WriteStartDocument(false|true);

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

view sourceprint?//写节点 

xmlWriter.WriteStartElement("cat"); 

//给节点添加属性 

xmlWriter.WriteAttributeString("color", "white"); 

//给节点内部添加文本 

xmlWriter.WriteString("I'm a cat"); 

xmlWriter.WriteEndElement();

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

view sourceprint?//通过WriteElementString可以添加一个节点同时添加节点内容 

xmlWriter.WriteElementString("pig", "pig is great");

3.如何写CData

view sourceprint?xmlWriter.WriteStartElement("dog"); 

//写CData 

xmlWriter.WriteCData("<strong>dog is dog</strong>"); 

xmlWriter.WriteEndElement();

4.如何使用XmlWriter添加注释

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

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

view sourceprint?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;


完整的代码示例如下:


view sourceprint?/*玉开技术博客 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 "); 

  

         

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,