Как добавить разрывы строк в сериализованный вывод объекта SyndicationFeed? - PullRequest
2 голосов
/ 13 мая 2009

Я использую класс 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 ]

2 голосов
/ 13 мая 2009

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

Все, что мне нужно было сделать, это указать объекту 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();
2 голосов
/ 13 мая 2009

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

Вот справочник MSDN .

...