如何确保DataContractSerializer的文件输出是"常规"格式的XML?

Fir*_*oso 3 xml serialization

每次我从DataContractSerializer输出XML时,它都是单行XML字符串.这是有效的XML,但阅读起来很痛苦.如何在其中添加额外的空格以将元素分解为标签线?

public void Save(Stream stream)
{
    DataContractSerializer serializer = new DataContractSerializer(typeof(ObservableCollection<PlottingDeviceInfo>));
    serializer.WriteObject(stream, this.Devices);
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 5

使用WriteObject带有a 的重载XmlWriter,然后将其传递给XmlWriter配置为产生漂亮的输出.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当你只使用a时Stream,WriteObject创建它自己的默认值XmlWriter.这XmlWriter是确定格式等的.