• 使用XmlWriter写Xml


    假定创建了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();
      
            }
        }
    }
  • 相关阅读:
    Eclipse安装TestNG插件
    总结Selenium WebDriver中一些鼠标和键盘事件的使用
    【资料收集】AutomationGuru
    centos7.4 yum安装包出现网络不可达跟Recv failure: Connection reset by peer" 这个问题
    ubuntu配置ntp
    OpenStack-ansible ubuntu16.04安装&& centos7 安装 && openSUSE 安装OpenStack-ansible
    HSRP&&STP&&ACL
    vlan通讯&&动态路由
    cisco交换机基本配置
    cisco教程 怎么改console密码 主机名 各种模式的切换等
  • 原文地址:https://www.cnblogs.com/wangluochong/p/3587498.html
Copyright © 2020-2023  润新知