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");