#freeze
[[.NET]]
今さらなネタだけど、たまに使うのよね。
いくつか方法があるけど、簡単にのはここかな?
* 参照追加 [#c138dd78]
System.ServiceModel を追加してね。
* 取得コード [#m699cb4a]
たとえば、こんな感じかな。
using System.ServiceModel.Syndication;
using System.Xml;
namespace rssYomiCon1 ※もちろんnamespace名は任意で
{
class rssGet1
{
public string url = "";
public string title = "";
public string description = "";
public List<rssData> rssget(string urlx)
{
List<rssData> r = new List<rssData>();
url = urlx;
using (XmlReader rdr = XmlReader.Create(url))
{
SyndicationFeed feed = SyndicationFeed.Load(rdr);
title = feed.Title.Text;
description = feed.Description.Text;
foreach (SyndicationItem item in feed.Items)
{
rssData rd = new rssData();
rd.title = item.Title.Text;
rd.desctipsion = item.Summary.Text;
rd.timestamp = item.PublishDate.LocalDateTime;
rd.link = (item.Links.Count > 0 ? item.Links[0].Uri.AbsolutePath : "");
r.Add(rd);
}
}
return (r);
}
}
class rssData
{
public string title;
public string desctipsion;
public DateTime timestamp;
public string link;
}
}
うん。実際に使う時は、こんな感じで。
rssGet1 rss = new rssGet1();
List<rssData> ro = rss.rssget("どこかのRSSのURL");
Console.WriteLine("Title:{0}",rss.title);
Console.WriteLine("Title:{0}", rss.description);