Ich habe eine Reihe von Lösungen hier gesehen, dass die Arbeit mit alten Versionen von .net angeboten:
SyndicationFeed: Content as CDATA?
Neben einer Nachverarbeitung Lösung hier:
https://gist.github.com/davidwhitney/1027181
Die Die erste Lösung war für mich nicht praktikabel, da wir die neueste Version von .net verwenden, und die zweite sah nach viel Aufwand für etwas so Einfaches aus, so dass ich letztendlich implementiert habe diese Lösung:
public class XmlCDataWriter : XmlTextWriter
{
public XmlCDataWriter(TextWriter w): base(w){}
public XmlCDataWriter(Stream w, Encoding encoding): base(w, encoding){}
public XmlCDataWriter(string filename, Encoding encoding): base(filename, encoding){}
public override void WriteString(string text)
{
if (text.Contains("<"))
{
base.WriteCData(text);
}
else
{
base.WriteString(text);
}
}
}
Und dann die Klasse zu verwenden:
public StringBuilder CDataOverwiriteMethod(Rss20FeedFormatter formatter)
{
var buffer = new StringBuilder();
//could be streamwriter as well
using (var stream = new StringWriter(buffer))
{
using (var writer = new XmlCDataWriter(stream))
{
var settings = new XmlWriterSettings() {Indent = true};
using (var xmlWriter = XmlWriter.Create(writer, settings))
{
formatter.WriteTo(xmlWriter);
}
}
}
return buffer;
}