System.ServiceModel.Syndicationクラスを利用してRSS2.0,ATOM形式でフィードを作成する。
ブログなどの更新通知に利用されるRSS/AtomフィードをSystem.ServiceModel.Syndicationクラスを利用して作成します。今日から日記にRSSをつけたので、よかったら購読お願いします。RSSはブログタイトルの右隣からどうぞ。
さて、今回はtekkの日記の2010年度、人気記事ベスト3をRSSで出力してみます。はてなカウンターで、2010年度のアクセスランキングを確認すると以下の結果となりました。
・3位
WinMergeをコマンドラインから利用する。 - tekkの日記 C#,VB.NET
1位は、ダントツでディープコピー。使い勝手の良いテクニックなので根強い人気です。フィードはSystem.ServiceModel.Syndicationクラスを使用して作成します。以下、サンプルです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.ServiceModel.Syndication;namespace FeedTest
{
class Program
{
static void Main(string[] args)
{SyndicationFeed feed = new SyndicationFeed();
feed.Title = new TextSyndicationContent("tekk diary best 3 topic");
feed.Links.Add(new SyndicationLink(new Uri("http://d.hatena.ne.jp/tekk/")));List
feedItemList = new List (); SyndicationItem feedItem = null;
feedItem = new SyndicationItem();
feedItem.Title = new TextSyndicationContent("どんなオブジェクトでもコピーできる汎用のディープコピー処理(ICloneable, MemberWiseClone, Serializable, BinaryFormatter, MemoryStream)");
feedItem.Links.Add(new SyndicationLink(new Uri("http://d.hatena.ne.jp/tekk/20100131/1264913887")));feedItemList.Add(feedItem);
feedItem = new SyndicationItem();
feedItem.Title = new TextSyndicationContent("Windowsサービスを作成する。(System.Configuration.Install.Installer,System.ServiceProcess.ServiceBase)");
feedItem.Links.Add(new SyndicationLink(new Uri("http://d.hatena.ne.jp/tekk/20100109/1263043544")));feedItemList.Add(feedItem);
feedItem = new SyndicationItem();
feedItem.Title = new TextSyndicationContent("WinMergeをコマンドラインから利用する。");
feedItem.Links.Add(new SyndicationLink(new Uri("http://d.hatena.ne.jp/tekk/20091206/1260072906")));feedItemList.Add(feedItem);
feed.Items = feedItemList;XmlWriter writer = null;
// Atom形式で保存
writer = XmlWriter.Create("atom.xml");
feed.SaveAsAtom10(writer);
writer.Close();// Rss2.0形式で保存
writer = XmlWriter.Create("rss.xml");
feed.SaveAsRss20(writer);
writer.Close();
}
}
}