Luc*_*tti 3 .net c# xml streaming serialization
我正在尝试IEnumerable<MyObject>使用 an序列化一个非常大XmlSerializer的对象,而不将所有对象保留在内存中。
该IEnumerable<MyObject>实际上是懒..
我正在寻找一种流媒体解决方案,它将:
IEnumerable<MyObject>
使用标准序列化将对象从序列化到底层流(我不想在这里手工制作 XML!)我正在尝试使用此代码:
using (var writer = new StreamWriter(filePath))
{
 var xmlSerializer = new XmlSerializer(typeof(MyObject));
  foreach (var myObject in myObjectsIEnumerable)
  {
   xmlSerializer.Serialize(writer, myObject);
  }
}
但是我得到了多个 XML 标头,而且我无法指定根标记,<MyObjects>因此我的 XML 无效。
任何的想法?
谢谢
该XmlWriter班是XML生成一个快速流API。这是相当低级的,MSDN 有一篇关于使用XmlWriter.Create().
编辑:链接已修复。这是文章中的示例代码:
async Task TestWriter(Stream stream) 
{
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Async = true;
    using (XmlWriter writer = XmlWriter.Create(stream, settings)) {
        await writer.WriteStartElementAsync("pf", "root", "http://ns");
        await writer.WriteStartElementAsync(null, "sub", null);
        await writer.WriteAttributeStringAsync(null, "att", null, "val");
        await writer.WriteStringAsync("text");
        await writer.WriteEndElementAsync();
        await writer.WriteCommentAsync("cValue");
        await writer.WriteCDataAsync("cdata value");
        await writer.WriteEndElementAsync();
        await writer.FlushAsync();
    }
}