« [Vista] SP2 で、固定 IP アドレスを設定しても、デフォルトゲートウェイが消える | トップページ | [.NET] 別スレッドから UI にデータを渡すコードを 1行で書く »

2009年10月 3日 (土)

[.NET] Web サーバーから RSS フィードを読み込む

.NET Framework 3.5 から System.ServiceModel.Syndication なんてカッコイイ名前空間が増えてまして。 これを使うと、 サックリと Web サーバーから RSS が読み込めるのですな。

こんな感じで。

WebClient svc = new WebClient();
svc.Encoding = new UTF8Encoding(); //ちぃっ、ちゃんとレスポンスヘッダを見ろよ~ (--;
string rssString = svc.DownloadString(url);
StringReader stringReader
  = new StringReader(rssString);
XmlReader reader
  = XmlReader.Create(stringReader);
SyndicationFeed feed
  = SyndicationFeed.Load(reader);

で、 この SyndicationFeed オブジェクトが持っている Items コレクションに、 SyndicationItem が入ってくるわけ。 おまけに、 これは Silverlight 3 でも使えるらしい。

と、 ここまでは良かったんですが。 SyndicationFeed ってば、 Atom 1.0 と RSS 2.0 しか読んでくれない。 まだまだ多い RSS 1.0 を読ませると、 そんなもんシラン、 と… orz

うゎ、 そりゃないでしょ~、 とボヤきながらも探してみれば。 ちゃんと神はいらっしゃる f(^^;

March 18, 2009
Syndicating and Consuming RSS 1.0 (RDF) Feeds in ASP.NET 3.5
By Scott Mitchell

このページからダウンロードできる Mitchell 氏が作った Rss10FeedFormatter を使えば、 RSS 1.0 を読み込むことができます。

さきほどの最後の行
SyndicationFeed feed
  = SyndicationFeed.Load(reader);

を、 次のように変更します。

skmFeedFormatters.Rss10FeedFormatter formatter
  = new skmFeedFormatters.Rss10FeedFormatter();
formatter.ReadFrom(reader);
SyndicationFeed feed = formatter.Feed;

これで RSS 1.0 が読み込めます。 ( 逆に、 これだけだと RSS 1.0 しか読めません。 )

また、 RSS 1.0 のすべての要素を読み込んでくれるわけではないです。 まぁ、 ソースコードを直してしまえばいいんですけどね。

|

« [Vista] SP2 で、固定 IP アドレスを設定しても、デフォルトゲートウェイが消える | トップページ | [.NET] 別スレッドから UI にデータを渡すコードを 1行で書く »

プログラミング」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [.NET] Web サーバーから RSS フィードを読み込む:

« [Vista] SP2 で、固定 IP アドレスを設定しても、デフォルトゲートウェイが消える | トップページ | [.NET] 別スレッドから UI にデータを渡すコードを 1行で書く »