C#使用XmlWriter写入XML文件

来源:互联网 发布:网络用语km是什么意思 编辑:程序博客网 时间:2024/06/08 11:46

XmlWriter 表示一个编写器,该编写器提供一种快速、非缓存和只进的方式来生成包含 XML 数据的流或文件。

假设我们要写入以下结构的XML:

<BookList>    <Book name="书籍1" id="1" category="计算机">    <Book name="书籍2" id="2" category="计算机"></BookList>

首先使用XmlWriter的静态成员函数Create创建一个xmlWriter对象,Create函数的参数为XML的文件名。

XmlWriter xmlWriter = XmlWriter.Create("config.xml");

然后开始写XML文档:

xmlWriter.WriteStartDocument();

写入BookList元素:

xmlWriter.WriteStartElement("BookList");

写入Book元素:

xmlWriter.WriteStartElement("Book");

写入Book元素的name属性

xmlWriter.WriteStartAttribute("name");    

写入name属性的值

xmlWriter.WriteValue("书籍1");

。。 然后依次写入id,category等属性

结束Book元素的写入

xmlWriter.WriteEndElement();

结束BookList元素的写入

xmlWriter.WriteEndElement();

结束XML文档的写入

xmlWriter.WriteEndDocument();

将XML文档写入磁盘(冲刷缓冲区)

xmlWriter.Flush();

关闭XML文档

xmlWriter.Close();
举例:
        private void saveMediaPlayerList(string[] MediaNames, string MediaListPath)        {            XmlWriterSettings Settings = new XmlWriterSettings();            Settings.Indent = true;            Settings.IndentChars = "  ";            XmlWriter Writer = XmlWriter.Create(MediaListPath, Settings);            //Writer.WriteStartDocument();            Writer.WriteStartElement("MediaPlayerList");            foreach (string MediaName in MediaNames)            {                Writer.WriteStartElement("MediaPath");                Writer.WriteString(MediaName);                Writer.WriteEndElement();            }            Writer.WriteEndElement();            Writer.Flush();            Writer.Close();        }       
循环语句也可以这样写:
        private void saveMediaList(string[] mediaNames,string MediaListPath)        {            XmlWriterSettings settings = new XmlWriterSettings();            settings.Indent = true;            settings.IndentChars = "  ";            XmlWriter xml = XmlWriter.Create(MediaListPath, settings);            xml.WriteStartElement("MediaList");            foreach (string mediaPath in mediaNames)            {                xml.WriteElementString("Media", mediaPath);            }            xml.WriteEndElement();            xml.Flush();            xml.Close();        }