Visual C# 2008でLINQ to XML + WPFでRSSを読み込むようなアプリを作ってみました。
1時間未満のやっつけなので、エラー処理なしのシンプルなものです。
とっかかりにはちょうどいいかも?
起動すると下のような画面になります。
デフォルトで、このBlogのRSSのURLが入ってます。
読み込みボタンを押すと、下のようにRSSを取得してきてタイトルを表示します。
適当な行を選択して、選択行を開くボタンを押すと、ブラウザで開きます。
RSSの取得はRssReaderクラスでやっててLINQ to XMLを使ってさくっとやってます。
namespace WpfRss
{
public class RssReader
{
public ICollection<RssInfo> Read(string rssUrl)
{
if (string.IsNullOrEmpty(rssUrl))
{
return new List<RssInfo> { new RssInfo { Title = "", URL = "about:blank" } };
}
XDocument doc = XDocument.Load(rssUrl);
var items = from item in doc.Descendants("item")
select new RssInfo {
Title = item.Element("title").Value,
URL = item.Element("link").Value
};
return items.ToList();
}
}
public class RssInfo
{
public string Title { get; set; }
public string URL { get; set; }
}
}
単純にitemタグからタイトルとリンクを抜いてるだけです。
LINQ to XMLを使うとひじょうにシンプルに書けました。
画面はWPFで作成してて、ListBoxにデータをバインドしてあります。
現在の選択行をとってるあたりがポイントかな?
選択行を開くボタンの処理は、下のようなコードになります。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var view = CollectionViewSource.GetDefaultView(Resources["rssItems"]);
if (view == null)
{
return;
}
var rssInfo = view.CurrentItem as RssInfo;
if (rssInfo != null)
{
Process.Start(rssInfo.URL);
}
}
CollectionViewSorceクラスの名前を忘れてちょっと悩んだのは秘密。
これの実際のサンプルはここからダウンロードできます。興味のある人はどうぞ。
もちろん自己責任で!