Как добавить разрывы строк в сериализованный вывод объекта SyndicationFeed?

Я использую класс SyndicationFeed для генерации канала Atom и Atom10FeedFormatter для его сериализации. Я хотел бы иметь возможность добавлять разрывы строк между элементами, когда файл записывается на диск. Я понимаю, что читателям ленты новостей все равно, но когда я просматриваю свои документы через http://feedvalidator.org/ он обрабатывает весь документ как одну строку, что делает PITA, чтобы увидеть, где мои ошибки, так как каждая ошибка на "линии 1".

Например, вместо вывода, как это:

<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">Title For My Feed</title><subtitle type="text">Subtitle for my feed.</subtitle><id>uuid:d2ad3f53-6f1a-4495-ba92-ab3231413f97;id=1</id><updated>2009-05-12T19:42:56Z</updated><author><name>Matt</name>...

Я хотел бы получить что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Title For My Feed</title>
  <subtitle type="text">Subtitle for my feed.</subtitle>
  <id>uuid:d2ad3f53-6f1a-4495-ba92-ab3231413f97;id=1</id>
  <updated>2009-05-12T19:42:56Z</updated>
  <author>
    <name>Matt</name>
    ...

Вот код, который я использую для сериализации, на случай, если это имеет значение:

XmlWriter atomWriter = XmlWriter.Create(@"atom.xml");
Atom10FeedFormatter atomFormatter = new Atom10FeedFormatter(TheFeed);
atomFormatter.WriteTo(atomWriter);
atomWriter.Close();

2 ответа

Решение

Класс XmlWriter имеет свойство Settings, которое позволяет форматировать xml различными способами, включая форматирование строк, а также отступы.

Вот ссылка на MSDN.

Ответ Джозефа заслуживает доверия за указание на правильный класс. Ниже приведены особенности для тех, кто ищет кодез.

Все, что мне нужно было сделать, это указать объекту XmlWriter сделать отступ в выводе. Это легко сделать, изменив свойство Indent объекта settings на true. Поэтому мой оригинальный код для сериализации канала (выше) был отредактирован так:

XmlWriterSettings WriterSettings = new XmlWriterSettings();
WriterSettings.Indent = true;

XmlWriter atomWriter = XmlWriter.Create(@"atom.xml", WriterSettings);
Atom10FeedFormatter atomFormatter = new Atom10FeedFormatter(TheFeed);
atomFormatter.WriteTo(atomWriter);
atomWriter.Close();
Другие вопросы по тегам