Как я могу убедиться, что файл, выводимый из DataContractSerializer, представляет собой «регулярно» отформатированный XML? - PullRequest
3 голосов
/ 20 сентября 2011

Каждый раз, когда я выводю XML из DataContractSerializer, это однострочная XML-строка. Это действительный XML, но его трудно читать. Как я могу добавить дополнительные пробелы, чтобы разбить элементы на строки с вкладками?

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

1 Ответ

5 голосов
/ 20 сентября 2011

Используйте перегрузку WriteObject, которая принимает 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);
    }
}

Когда вы просто используете Stream, WriteObject создает свой собственный, по умолчанию XmlWriter.XmlWriter определяет формат и т. Д.

...