使用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(); |
} |
} |
} |
C#处理Xml的相关随笔:
转 玉开的技术博客

浙公网安备 33010602011771号