如何在SyndicationFeed对象的序列化输出中添加换行符?

时间:2009-05-12 20:40:14

标签: c# .net syndication syndication-feed

我正在使用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 个答案:

答案 0 :(得分:2)

XmlWriter类有一个Settings属性,允许您以多种方式格式化xml,包括行格式化和缩进。

这是MSDN reference

答案 1 :(得分:2)

Joseph's answer因为指向正确的班级而获得了荣誉。以下是其他任何寻找代码的人的具体细节。

我所要做的就是告诉XmlWriter对象缩进输出。通过将settings对象的Indent属性更改为true可以轻松完成。所以我的原始代码序列化feed(上面)编辑如下:

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

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