2

SyndicationFeedクラスを使用して Atom フィードを生成し、Atom10FeedFormatter を使用してシリアル化しています。ファイルがディスクに書き込まれるときに、要素間に改行を追加できるようにしたいと考えています。フィード リーダーが気にしないことはわかっていますが、http://feedvalidator.org/ でドキュメントを実行すると、ドキュメント全体が 1 行として扱われます。 「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();
4

2 に答える 2

2

XmlWriter クラスには、行の書式設定やインデントなど、さまざまな方法で xml を書式設定できる Settings プロパティがあります。

MSDN リファレンスは次のとおりです。

于 2009-05-12T20:48:34.580 に答える
2

ジョセフの答えは、私を正しいクラスに向けてくれた功績があります。以下は、コーデックスを探している他の人のための詳細です。

私がしなければならなかったのは、XmlWriter オブジェクトに出力をインデントするように指示することだけでした。これは、設定オブジェクトの Indent プロパティを 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();
于 2009-05-12T22:07:15.230 に答える