0

C# と Linq to XML を使用して RSS フィードを読み込もうとしています。フィードは utf-8 でエンコードされており ( http://pc03224.kr.hsnr.de/infosys/feed/を参照)、CDATA セクションで囲まれているため、説明ノードを除いて、通常は正常に読み取られます。

何らかの理由で、「description」タグの内容を読み取った後、デバッガーで CDATA タグが表示されませんが、このセクションでのみドイツ語のウムラウト (äöü) やその他の特殊文字が使用されていないため、どこかにあるに違いないと思います。正しく表示されます。代わりに、 のように utf-8 でエンコードされた文字列に残りますü

どうにかしてそれらを正しく読み取るか、少なくとも後でデコードできますか?

これは、問題を引き起こしている RSS セクションのサンプルです。

<description><![CDATA[blabla bietet H&#246;rern meiner Vorlesungen &#8220;IAS&#8221;, &#8220;WEB&#8221; und &#8220;SWE&#8221; an, Lizenzen f&#252;r blabla [...]]]></description>

RSS フィード データを読み取って解析するコードは次のとおりです。

RssItems = (from xElem in xml.Descendants("channel").Descendants("item")
                            select new RssItem
                                       {
                                           Content =  xElem.Descendants("description").FirstOrDefault().Value,
                                           ...
                                       }).ToList();

前もって感謝します!

4

1 に答える 1

2

あなたのコードは意図したとおりに機能しています。CDATA セクションは、コンテンツが解釈されるべきではないことを意味します。つまり"&#246;"、HTML エンティティとしてではなく、文字のシーケンスとして扱われるべきです。

RSS フィードの作成者に連絡して、エンティティが解釈されるように CDATA タグを削除するか、目的の文字を直接 HTML ファイルに挿入することで修正するように伝えてください。

または、 HttpUtility.HtmlDecodeを見て、CDATA コンテンツをもう一度デコードします。

于 2009-11-12T22:07:43.730 に答える