按顺序编写XML

时间:2011-03-31 15:49:47

标签: c# xml

我正在使用XML来记录数据流。我知道,有更好的数据格式,但我们有理由!

通常我会使用XmlDocument将xml数据存储在内存中,然后将整个内容写出来。这在这里并没有多大帮助,因为我们记录数据流的时间没有指定,并且可能不会在足够短的时间内修复,以免内存不足。

最好的方法是什么?

感谢。

3 个答案:

答案 0 :(得分:3)

好吧,你可以使用XmlWriter。棘手的一点是知道何时关闭文档 - 在你这样做之前,它将不是有效的XML;在你这样做之后,你就不能再追加它了。

请注意,您不必直接使用XmlWriter 。例如,使用LINQ to XML(我首选的XML API; XmlDocument等类更好)你可以创建编写器,写出任何“标题”信息(例如开始标记)对于容器),然后为要编写的每个值创建XElement个对象,并调用element.WriteTo(writer)

示例代码:

using System;
using System.Xml;
using System.Xml.Linq;

class Test
{
    static void Main() 
    {
        using (XmlWriter writer = XmlWriter.Create("test.xml"))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("log");
            writer.WriteStartElement("entries");

            for (int i = 0; i < 10; i++)
            {
                XElement element = new XElement("entry", "Entry " + i);
                element.WriteTo(writer);
            }
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.WriteEndDocument();
        }
    }
}

答案 1 :(得分:1)

  

XmlWriter提供了一种快速,非缓存,仅向前的方法来生成包含XML数据的流或文件。

答案 2 :(得分:0)

IMO最好的方法是使用XmlWriter类,请参阅this article