2012-04-11 6 views
1

私はSyndicationItemコンテンツ< >は<&GTにエンコードされている

"<p>Hello World</p>" 

ように私のSyndicationItemコンテンツオブジェクトへのいくつかの簡単なタグを追加していますが、私が試してみました

"&lt;p&gtHello World&lt;/p&gt" 

としてRSSフィードに表示されこれを避けるためにはさまざまな方法がありますが、どちらも機能しません。

私は解決策の数がここで.NETの古いバージョンでその仕事を提供して見てきました

答えて

0

SyndicationFeed: Content as CDATA?

と同様に、ここでのポスト処理ソリューション:

https://gist.github.com/davidwhitney/1027181

私たちが.netの最新バージョンを使用しているので、最初の解決策は私にとっては実行可能ではなく、2番目の解決策は非常に単純なもののオーバーヘッドのように見えました。このソリューション:

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); 
       } 
      } 

     } 

そしてクラスを使用するには:

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; 
     } 
関連する問題

 関連する問題