使用Linq to XML和C#阅读RSS提要-如何解码CDATA部分?

使用Linq to XML和C#阅读RSS提要-如何解码CDATA部分?,c#,encoding,rss,linq-to-xml,cdata,C#,Encoding,Rss,Linq To Xml,Cdata,我正在尝试使用C#和linqtoxml阅读RSS提要。 提要是用utf-8编码的(请参阅),读取它通常可以正常工作,除了描述节点外,因为它包含在CDATA节中 出于某种原因,在读取“description”标记的内容后,我在调试器中看不到CDATA标记,但我猜它一定在某个地方,因为只有在这一部分中,德语的Umlaute(äöü)和其他特殊字符没有正确显示。相反,它们保留在utf-8编码字符串中,如和#252 我能不能正确地读出它们,或者至少在事后对它们进行解码 这是RSS部分给我带来麻烦的一个示

我正在尝试使用C#和linqtoxml阅读RSS提要。 提要是用utf-8编码的(请参阅),读取它通常可以正常工作,除了描述节点外,因为它包含在CDATA节中

出于某种原因,在读取“description”标记的内容后,我在调试器中看不到CDATA标记,但我猜它一定在某个地方,因为只有在这一部分中,德语的Umlaute(äöü)和其他特殊字符没有正确显示。相反,它们保留在utf-8编码字符串中,如
和#252

我能不能正确地读出它们,或者至少在事后对它们进行解码

这是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>

提前谢谢

您的代码正在按预期工作。CDATA部分意味着内容不应被解释,即
“ö;”
不应被视为HTML实体,而应被视为字符序列

联系RSS源的作者,告诉他修复它,或者删除CDATA标记以便对实体进行解释,或者将预期的字符直接放入HTML文件中


或者,再次查看CDATA内容的解码。

解码此类CDATA的更好方法可能是在
StringReader
中包装的内容上以片段模式使用
XmlReader
——这将消除对ASP.NET程序集的依赖性。这不是我们项目的问题。不过总的来说这是个好主意。
RssItems = (from xElem in xml.Descendants("channel").Descendants("item")
                            select new RssItem
                                       {
                                           Content =  xElem.Descendants("description").FirstOrDefault().Value,
                                           ...
                                       }).ToList();