Reputation: 6685
Every time I output XML from a DataContractSerializer, it's a single line XML string. This is valid XML, but it's a pain to read. How can I get additional whitespace added in there to break out elements into tabbed lines?
public void Save(Stream stream)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(ObservableCollection<PlottingDeviceInfo>));
serializer.WriteObject(stream, this.Devices);
}
Upvotes: 3
Views: 579
Reputation: 161821
Use the WriteObject
overload that takes an XmlWriter
, then pass it an XmlWriter
configured to produce pretty output.
public void Save(Stream stream)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(ObservableCollection<PlottingDeviceInfo>));
using (var writer = XmlWriter.Create(stream, new XmlWriterSettings{Indent=true}))
{
serializer.WriteObject(writer, this.Devices);
}
}
When you just use a Stream
, WriteObject
creates it's own, default XmlWriter
. It's the XmlWriter
that determines the format, etc.
Upvotes: 5