Gente,¿Cómo escribir XML (grande) en un archivo en C#?
Por favor, ¿cuál es una buena forma de escribir documentos XML muy grandes (hasta 500 MB) en C# .NET 3.5? He tenido un poco de búsqueda, y parece que no puedo encontrar nada que aborde esta pregunta específica.
Mi hilo anterior (What is the best way to parse (big) XML in C# Code?) cubierto leyendo documentos de magnitud similar Xml ... Con eso resuelto, tengo que pensar en cómo escribir las características actualizadas (http://www.opengeospatial.org/standards/sfa) en un documento "update.xml".
Mis ideas: Obviamente, se ha eliminado un gran DOM, teniendo en cuenta el tamaño máximo del documento que se va a producir. Estoy usando XSD.EXE para generar clases de enlace desde el esquema ... que funciona muy bien con la clase XmlSerializer, pero creo que construye un DOM "bajo el capó". ¿Es esto correcto?. No puedo mantener todas las funciones (hasta 50,000 de ellas) en la memoria al mismo tiempo. Necesito leer una característica de la base de datos, serializarla y escribirla en un archivo. Así que estoy pensando que debería usar XmlSerializer para escribir un "doclet" para cada característica individual en el archivo. Todavía no tengo idea (todavía) si esto es posible/factible.
¿Qué opinas?
Antecedentes: Estoy portando un viejo VB6 MapInfo "cliente complemento" a C#. Existe un "servicio de actualización" de J2EE (en realidad solo una aplicación web) con el que debe trabajar este programa (entre otros). No puedo cambiar el servidor; a menos que sea absapositivamente necesario; especialmente de eso implica cambiar a los otros clientes. El servidor acepta un documento XML con un esquema que no especifica ningún espacio de nombres ... es decir: solo hay espacio de nombres predeterminado, y todo está en él.
Mi experiencia: Soy casi un C# y .NET novato. He estado programando durante aproximadamente 10 años en varios idiomas, incluidos Java, VB, C y algunos C++.
Saludos a todos. Keith.
PD: Es la hora de la cena, así que estaré ausente durante aproximadamente media hora.
Marc, Merci. (Según mi comentario a la respuesta de David Schmitt) Lo intentaré de ambas formas y realizaré algunas pruebas de rendimiento. Le agradezco señor por su respuesta, y ese código de ejemplo. Increíble. Ejército de reserva. ;-) Solo espero poder devolver el favor algún día. Saludos. Keith. – corlettk