流XML序列化在.NET [英] streaming XML serialization in .net
问题描述
我试图序列化一个非常大的的IEnumerable<为MyObject>使用
的的XmlSerializer
不保持所有的对象在存储器中。
I'm trying to serialize a very large IEnumerable<MyObject>
using an XmlSerializer
without keeping all the objects in memory.
在的IEnumerable&LT;为MyObject&GT;
其实是懒惰的。
我正在寻找一个流媒体解决方案,将:
I'm looking for a streaming solution that will:
- 在以一个对象从
的IEnumerable&LT;为MyObject&GT;
它序列化到使用标准的序列化基础流(我不想在这里手制的XML!的) - 弃内存中的数据,并移动到下一
- Take an object from the
IEnumerable<MyObject>
Serialize it to the underlying stream using the standard serialization (I don't want to handcraft the XML here!) - Discard the in memory data and move to the next
我想这个code:
using (var writer = new StreamWriter(filePath))
{
var xmlSerializer = new XmlSerializer(typeof(MyObject));
foreach (var myObject in myObjectsIEnumerable)
{
xmlSerializer.Serialize(writer, myObject);
}
}
但我发现了多个XML头,我不能指定一个根标签&LT; MyObjects&GT;
所以我的XML是无效的。
but I'm getting multiple XML headers and I cannot specify a root tag <MyObjects>
so my XML is invalid.
你知道吗?
感谢
推荐答案
在的XmlTextWriter
类是XML生成一个快速流API。这是相当低的水平,MSDN有实例化一个确证的文章 XmlTextWriter中使用 XmlWriter.Create()
。
The XmlTextWriter
class is a fast streaming API for XML generation. It is rather low-level, MSDN has an article on instantiating a validating XmlTextWriter using XmlWriter.Create()
.
这篇关于流XML序列化在.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!