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();
}