使用 C# 在 .net 中阅读 rss 提要的最佳方式 [关闭]
Posted
技术标签:
【中文标题】使用 C# 在 .net 中阅读 rss 提要的最佳方式 [关闭]【英文标题】:Best Way to read rss feed in .net Using C# [closed] 【发布时间】:2012-05-11 01:55:48 【问题描述】:阅读RSS 提要的最佳方式是什么?
我正在使用XmlTextReader
来实现这一点。还有其他最好的方法吗?
XmlTextReader reader = new XmlTextReader(strURL);
DataSet ds = new DataSet();
ds.ReadXml(reader);
使用XmlTextReader
阅读RSS 提要 后,有什么方法可以将数据填充到ListItem
而不是DataSet
?
【问题讨论】:
【参考方案1】:更新:这仅支持 UWP - Windows 社区工具包
现在有一个更简单的方法。您可以使用RssParser 类。示例代码如下。
public async void ParseRSS()
string feed = null;
using (var client = new HttpClient())
try
feed = await client.GetStringAsync("https://visualstudiomagazine.com/rss-feeds/news.aspx");
catch
if (feed != null)
var parser = new RssParser();
var rss = parser.Parse(feed);
foreach (var element in rss)
Console.WriteLine($"Title: element.Title");
Console.WriteLine($"Summary: element.Summary");
对于非 UWP,按照其他人的建议,使用命名空间 System.ServiceModel.Syndication
中的 Syndication。
public static IEnumerable <FeedItem> GetLatestFivePosts()
var reader = XmlReader.Create("https://sibeeshpassion.com/feed/");
var feed = SyndicationFeed.Load(reader);
reader.Close();
return (from itm in feed.Items select new FeedItem
Title = itm.Title.Text, Link = itm.Id
).ToList().Take(5);
public class FeedItem
public string Title
get;
set;
public string Link
get;
set;
【讨论】:
【参考方案2】:在引用中添加System.ServiceModel
使用SyndicationFeed
:
string url = "http://fooblog.com/feed";
XmlReader reader = XmlReader.Create(url);
SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();
foreach (SyndicationItem item in feed.Items)
String subject = item.Title.Text;
String summary = item.Summary.Text;
...
【讨论】:
这是混蛋。很棒而且简洁。您还需要使用 System.Xml;但这很明显。对于 Blogger,URL 目前是“blogname.blogspot.com/feeds/posts/default”(Atom 1.0)和“blogname.blogspot.com/feeds/posts/default?alt=rss”对于 RSS 2.0。 SyndicationItem 项目具有您需要的所有项目属性。只需在 Visual Studio 调试器中检查对象并被照亮。 我们可以使用 XmlTextReader 代替 xmlreader 有什么性能差异吗? 对于 .Net Core,您要安装以使用它的 NuGet 包是System.ServiceModel.Syndication
对于 2019 年,每次我尝试访问唯一的预发布版本时都会爆炸。【参考方案3】:
这是一篇旧文章,但如果你像我一样现在来到这里,为了节省人们一些时间,我建议你看看支持更广泛 RSS 的 CodeHollow.FeedReader 包版本,更容易使用,看起来更健壮。 https://github.com/codehollow/FeedReader
【讨论】:
【参考方案4】:使用这个:
private string GetAlbumRSS(SyndicationItem album)
string url = "";
foreach (SyndicationElementExtension ext in album.ElementExtensions)
if (ext.OuterName == "itemRSS") url = ext.GetObject<string>();
return (url);
protected void Page_Load(object sender, EventArgs e)
string albumRSS;
string url = "http://www.SomeSite.com/rss";
XmlReader r = XmlReader.Create(url);
SyndicationFeed albums = SyndicationFeed.Load(r);
r.Close();
foreach (SyndicationItem album in albums.Items)
cell.Innerhtml = cell.InnerHtml +string.Format("<br \'><a href='0'>1</a>", album.Links[0].Uri, album.Title.Text);
albumRSS = GetAlbumRSS(album);
【讨论】:
【参考方案5】:您正在寻找 SyndicationFeed
class,它正是这样做的。
【讨论】:
以上是关于使用 C# 在 .net 中阅读 rss 提要的最佳方式 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章