【问题标题】:C# consume rss feed containing xml-stylesheet?C# 使用包含 xml 样式表的 rss 提要?
【发布时间】:2011-03-09 11:12:36
【问题描述】:

我在使用 c# 解析 rss 提要时遇到问题。 我曾经使用这种方法来加载提要。 XDocument rssFeed = XDocument.Load(@url); 但是,当我注意到提要有一个 xml 样式表时,这个方法会崩溃,说 xml 格式不正确...... 这是一个包含此标签的 RSS 提要 http://www.channelnews.fr/accueil.feed?type=rss

使用 c# 解析任何 rss 提要的最佳方法是什么?

感谢您的帮助

【问题讨论】:

    标签: c# xml .net-3.5 rss


    【解决方案1】:

    这个效果更好:

    XDocument xdoc = XDocument.Load("http://pedroliska.wordpress.com/feed/");
    
    var items = from i in xdoc.Descendants("item")
                select new
                {
                    Title = i.Element("title").Value
                };
    

    所以现在您可以通过循环或类似的方式访问 rss 标题:

    items[0].Title
    

    而且只是代码从 rss 提要中提取标题,您可以提取描述、链接、pubDate 等。

    【讨论】:

    • 记得将命名空间添加到传递给.Descendants.Element 的XName 中,否则您可能会得到0 个结果。对于 Atom 提要,这是静态的,所以:private static string XName(string elementName) { return string.Concat("{http://www.w3.org/2005/Atom}", elementName); }
    【解决方案2】:

    此代码适用于我

        static XDocument DownloadPage()
        {
            var req = (HttpWebRequest)WebRequest.Create("http://www.channelnews.fr/accueil.feed?type=rss");
            req.UserAgent = "Mozilla";
    
            using(var response = req.GetResponse())
            using(var stream = response.GetResponseStream())
            using (var reader = new StreamReader(stream))
                return XDocument.Load(reader);
        }
    

    请注意,如果您省略设置 UserAgent,则响应将包含字符串“DOS”,这肯定不是 xml :)

    【讨论】:

    • 是的就是这个...我错过了 UserAgent...谢谢...Stan
    猜你喜欢
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多