Here is what we did :
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); } } }
And then to use the class :
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; }