He notado dos enfoques diferentes para escribir datos en un archivo XML (manejo de errores omitido por brevedad).Uso de MemoryStream para escribir en XML
El primer método tiene que construir el documento XML y luego simplemente guardar el XML en un archivo:
using (XmlWriter writer = XmlWriter.Create(fileName))
{
writer.WriteStartDocument(true);
writer.WriteStartElement("parentelement");
writer.WriteEndElement();
writer.WriteEndDocument();
}
El segundo método tiene que crear un MemoryStream, y guarde el MemoryStream a un archivo:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
MemoryStream ms = new MemoryStream();
using (XmlWriter writer = XmlWriter.Create(ms, settings))
{
writer.WriteStartDocument(true);
writer.WriteStartElement("parentelement");
writer.WriteEndElement();
writer.WriteEndDocument();
}
using (FileStream fs = File.Open(fileName, FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
ms.Dispose();
}
Supongo que la lógica para usar un MemoryStream es asegurar que el archivo XML pueda construirse antes de intentar guardar el archivo. ¿El método MemoryStream proporcionará un evento de escritura atómica y/o protegerá contra problemas de escritura mientras agrega entradas al archivo XML?
¿Alguien puede explicar si esto es realmente necesario o simplemente una forma exagerada de agregar líneas innecesarias de código a mi proyecto?
Gracias por la respuesta ... Ambos métodos en mi pregunta funcionan, sin lugar a dudas ... Solo quería intentar aclarar si debía usar MemoryStream o no. – Dscoduc
XmlWriter lo protegerá y aplicará xml bien formado excepto: 1) si usa WriteDocType o WriteRaw 2) si se detiene antes, es decir, no cierre todos los elementos al elemento raíz al final – ShuggyCoUk
Gracias por la aclaración ... – Dscoduc