streaming XML serialization in .net
        Posted  
        
            by Luca Martinetti
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Luca Martinetti
        
        
        
        Published on 2009-04-06T13:51:41Z
        Indexed on 
            2010/03/27
            3:03 UTC
        
        
        Read the original article
        Hit count: 381
        
Hello,
I'm trying to serialize a very large IEnumerable<MyObject> using an XmlSerializer without keeping all the objects in memory.
The IEnumerable<MyObject> is actually lazy..
I'm looking for a streaming solution that will:
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
 
I'm trying with this code:
using (var writer = new StreamWriter(filePath))
{
 var xmlSerializer = new XmlSerializer(typeof(MyObject));
  foreach (var myObject in myObjectsIEnumerable)
  {
   xmlSerializer.Serialize(writer, myObject);
  }
}
but I'm getting multiple XML headers and I cannot specify a root tag <MyObjects> so my XML is invalid.
Any idea?
Thanks
© Stack Overflow or respective owner