miércoles, 1 de agosto de 2012

C# Serializar XML con retorno de carro entre tags, XmlSerializer, XmlWriter Indent

Nos disponemos a serializar un objeto a formato XML en disco usando la combinación de clases System.Xml.Serialization.XmlSerializer y System.Xml.XmlWriter. Por defecto XmlWriter no añade retornos de carro en el fichero de texto plano resultante, si lo abrimos con un bloc de notas una vez serializado en disco veremos algo así:
<xml><tag1>1</tag1><tag2>2</tag2></xml>
Tal vez, nos interese que el resultado tenga este formato:
<xml>
<tag1>1</tag1>
<tag2>2</tag2>
</xml>
Esta característica se conoce como Indentación del contenido y XmlSerializer, XmlWriter nos permiten controlarlo del siguiente modo:
ObjetoSerializable obj = new ObjetoSerializable();
//... (Completar valores)

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\r";

using (XmlWriter oWriter = XmlWriter.Create(string.Format(@"c:\{0}",nombreFichero),settings))
{
  XmlSerializer oSerializer;
  oSerializer = new XmlSerializer(typeof(ObjetoSerializable));
  oSerializer.Serialize(oWriter, obj);
}
En el archivo de areaTIC puedes encontrar otros artículos interesantes, no dudes en consultarlo.


No hay comentarios:

Publicar un comentario