我正在使用XML来记录数据流。我知道,有更好的数据格式,但我们有理由!
通常我会使用XmlDocument将xml数据存储在内存中,然后将整个内容写出来。这在这里并没有多大帮助,因为我们记录数据流的时间没有指定,并且可能不会在足够短的时间内修复,以免内存不足。
最好的方法是什么?
感谢。
答案 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。