0
点赞
收藏
分享

微信扫一扫

c#Xml读写总结

鱼满舱 2022-03-12 阅读 48

1、xml文档结构

<?xml version="1.0" encoding="utf-8"?>
<book
  publishTime="2020"
  publishAddress="anhui">
  <title>who am i</title>
  <author>
    <name>xiaoming</name>
  </author>
</book>

1)版本号
在这里插入图片描述
2)文档的编码格式(默认utf-8)
在这里插入图片描述
可通过更改XmlWriterSettings对象的Encoding属性来更改,但是如果XmlWriter的对象创建时使用了TextWriter 类的对象,比如StreamWriter,那么这个Encoding属性将会被StreamWriter的编码格式给覆盖,如下:

var settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.IndentChars = "\n";
            settings.NewLineOnAttributes = true;
            settings.Encoding = Encoding.ASCII;
            settings.WriteEndDocumentOnClose = true;

            StreamWriter sw = new StreamWriter(fileName, false, Encoding.Unicode);
            using (XmlWriter writer = XmlWriter.Create(sw, settings))
            {
                writer.WriteStartDocument();//开头必须是这个
                writer.WriteStartElement("book");//该元素有属性或者元素下面有子元素则使用这个
                writer.WriteAttributeString("publishTime", "2020");//特性
                writer.WriteAttributeString("publishAddress", "anhui");//特性
                writer.WriteElementString("title", "who am i");//元素,并且含有文本
                writer.WriteStartElement("author");//该元素有属性或者元素下面有子元素则适合找个
                writer.WriteElementString("name", "xiaoming");//元素,并且含有文本
                writer.WriteEndElement();//元素结束
                writer.WriteEndDocument();//文档结束
            }
            sw.Close();

因为XmlWriterSettings的Encoding属性是utf-8,但是StreamWriter指定编码格式是unicode,最后生成的xml如下:
在这里插入图片描述
这里的encoding是Utf-16,为什么不是ascii也不是Unicode,是因为unicode也是一种Utf-16,msdn的解释是unicode是 Little-Endian 字节顺序的 UTF-16 格式的编码, Little-Endian 指的是在内存中低位字节存在内存的低地址端。
3)

2、XmlWriter

 class XmlHelp
    {
        public void WriterXml(string fileName)
        {
            var settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.NewLineOnAttributes = true;
            settings.Encoding = Encoding.UTF8;
            settings.WriteEndDocumentOnClose = true;

            StreamWriter sw = File.CreateText(fileName );
            using (XmlWriter writer = XmlWriter.Create(sw, settings)) 
            {
                writer.WriteStartDocument();//开头必须是这个
                writer.WriteStartElement("book");//该元素有属性或者元素下面有子元素则使用这个
                writer.WriteAttributeString("publishTime","2020");//特性
                writer.WriteAttributeString("publishAddress", "anhui");//特性
                writer.WriteElementString("title", "who am i");//元素,并且含有文本
                writer.WriteStartElement("author");//该元素有属性或者元素下面有子元素则适合找个
                writer.WriteElementString("name", "xiaoming");//元素,并且含有文本
                writer.WriteEndElement();//元素结束
                writer.WriteEndDocument();//文档结束
            }

        }
    }

调用:

XmlHelp xmlHelp = new XmlHelp();
            xmlHelp. WriterXml("1.xml");
举报

相关推荐

0 条评论