2009-05-12 23 views
2

Ich verwende die SyndicationFeed Klasse, um einen Atom-Feed und einen Atom10FeedFormatter zu generieren, um es zu serialisieren. Ich möchte in der Lage sein, Zeilenumbrüche zwischen den Elementen hinzuzufügen, wenn die Datei auf die Festplatte geschrieben wird. Mir ist klar, dass die Feed-Reader nicht wichtig sind, aber wenn ich meine Dokumente durch http://feedvalidator.org/ führe, behandelt es das ganze Dokument als eine einzige Zeile, was es zu einem PITA macht, um zu sehen, wo meine Fehler sind, da jeder Fehler in "Zeile 1" ist.Wie kann ich der serialisierten Ausgabe eines SyndicationFeed-Objekts Zeilenumbrüche hinzufügen?

Zum Beispiel statt Ausgabe wie folgt:

<?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>... 

Ich möchte Ausgang, so etwas bekommen:

<?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> 
    ... 

Hier ist der Code, den ich serialisiert bin mit, nur in Fall, dass es darauf ankommt:

Antwort

2

Die XmlWriter-Klasse verfügt über die Eigenschaft Settings, mit der Sie Ihr XML in einer Zahl formatieren können von Wegen, einschließlich Zeilenformatierung und auch Einrückung.

Hier ist die MSDN reference.

2

Joseph's answer bekommt den Kredit dafür, mich auf die richtige Klasse zu zeigen. Was folgt, sind die Besonderheiten für jeden anderen, der nach Codez sucht.

Alles, was ich tun musste, war dem XmlWriter-Objekt mitzuteilen, die Ausgabe einzurücken. Dies konnte einfach erreicht werden, indem die Eigenschaft "Einzug" des Einstellungsobjekts in "true" geändert wurde. So wurde mein ursprünglicher Code zum Serialisieren des Feeds (oben) wie folgt bearbeitet:

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

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