使用Linq to XML和C#阅读RSS提要-如何解码CDATA部分?
我正在尝试使用C#和linqtoxml阅读RSS提要。 提要是用utf-8编码的(请参阅),读取它通常可以正常工作,除了描述节点外,因为它包含在CDATA节中 出于某种原因,在读取“description”标记的内容后,我在调试器中看不到CDATA标记,但我猜它一定在某个地方,因为只有在这一部分中,德语的Umlaute(äöü)和其他特殊字符没有正确显示。相反,它们保留在utf-8编码字符串中,如使用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部分给我带来麻烦的一个示
和#252代码>
我能不能正确地读出它们,或者至少在事后对它们进行解码
这是RSS部分给我带来麻烦的一个示例:
<description><![CDATA[blabla bietet Hörern meiner Vorlesungen “IAS”, “WEB” und “SWE” an, Lizenzen fü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();