Tengo este código, que serializa un objeto en un archivo. Estoy intentando que cada atributo XML salga en una línea separada. El código es el siguiente:¿Cómo configuro la propiedad Settings en XmlTextWriter, para que pueda escribir cada atributo XML en su propia línea?
public static void ToXMLFile(Object obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
settings.NewLineOnAttributes = true;
XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8);
writer.Settings = settings; // Fails here. Property is read only.
using (Stream baseStream = writer.BaseStream)
{
serializer.Serialize(writer, obj);
}
}
El único problema es que la propiedad del objeto Settings
XmlTextWriter
es de sólo lectura.
¿Cómo configuro la propiedad Settings
en el objeto XmlTextWriter
, de modo que la configuración NewLineOnAttributes
funcione?
Bueno, pensé que necesitaba un XmlTextWriter
, ya que es una clase XmlWriter
abstract
. Un poco confuso si me preguntas. código de trabajo final está aquí:
/// <summary>
/// Serializes an object to an XML file; writes each XML attribute to a new line.
/// </summary>
public static void ToXMLFile(Object obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineOnAttributes = true;
using (XmlWriter writer = XmlWriter.Create(filePath, settings))
{
serializer.Serialize(writer, obj);
}
}
No instanciar. Dice que se ejecutó, pero el objeto así creado es nulo. Nota: utilicé 'XmlTextWriter writer = XmlWriter.Create (filePath, settings) como XmlTextWriter;' –
@RobertHarvey - Eso significa que 'XmlWriter.Create (...)' no crea un 'XmlTextWriter'. Cuando mires el resultado, verás que devuelve un 'XmlWellFormedWriter'. Sin embargo, sería sabio tratarlo como un 'XmlWriter'. – Polity
Entonces, ¿cómo puedo obtener un 'XmlTextWriter'? –