首页 文章

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

提问于
浏览
0

我正在尝试使用C#和Linq to XML读取RSS源 . feed以utf-8编码(参见http://pc03224.kr.hsnr.de/infosys/feed/)并且读取它通常可以正常工作,除了描述节点,因为它包含在CDATA部分中 .

出于某种原因,在读出"description"标签的内容后,我无法在调试器中看到CDATA标签,但我想它必定存在于某处,因为只有在本节中,德语Umlaute(äöü)和其他特殊字符才能正确显示 . 相反,它们保留在字符串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();

提前致谢!

1 回答

  • 2

    您的代码按预期工作 . CDATA部分意味着不应解释内容,即 "&#246;" 不应被视为HTML实体,而应视为一系列字符 .

    联系RSS提要的作者并告诉他修复它,方法是删除CDATA标签,以便解释实体,或者将目标字符直接放入HTML文件中 .

    或者,查看HttpUtility.HtmlDecode以再次解码CDATA内容 .

相关问题