Lectura de documentos XML grandes en .net

Necesito leer xml grande usando archivos .net que pueden ser fácilmente de varios GB de tamaño.

Traté de usar XDocument, pero arroja un System.OutOfMemoryException cuando bash cargar el documento.

¿Cuál es la forma más eficaz de leer archivos XML de gran tamaño?

Básicamente, debes usar el modelo “pull” aquí – XmlReader y XmlReader amigos. Eso le permitirá transmitir el documento en lugar de cargarlo todo en la memoria de una vez.

Tenga en cuenta que si sabe que está al principio de un elemento “lo suficientemente pequeño”, puede crear un elemento XElement partir de un XmlReader , tratar con eso utilizando la gloria de LINQ a XML y luego pasar al siguiente elemento.

La siguiente página es una lectura interesante, que proporciona un medio para extraer datos del archivo XML sin cargarlo en la memoria. Le permite combinar la velocidad de XmlReader con la flexibilidad de Linq:

http://msdn.microsoft.com/en-us/library/bb387035.aspx

Y un artículo bastante interesante basado en esta técnica:

http://blogs.msdn.com/b/xmlteam/archive/2007/03/24/streaming-with-linq-to-xml-part-2.aspx

Podría intentar usar una instancia de XmlTextReader .

http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.aspx