.NET TIPS

RSS 2.0/ATOM 1.0フィードを処理するには?[3.5、C#、VB]

デジタルアドバンテージ 岸本 真二郎
2008/06/12

 .NET Framework 3.5に含まれるWCF(Windows Communication Foundation)には、RSS/ATOMフィードを配信する機能が用意されているが、これに含まれるクラスを利用することで、アプリケーションからRSS 2.0/ATOM 1.0のフィード(以下、単に「RSSフィード」)を直接読み込むことができる。

 本稿では、例としてコンソール・アプリケーションでRSSフィードを読み込む処理を紹介する。

 まずVisual Studioでコンソール・アプリケーションのプロジェクトを新規作成する。その後、.NET 3.5では「System.ServiceModel.Web」への参照を、.NET 4以降では「System.ServiceModel」への参照を追加しておく。そして、Mainメソッドの中に、以下に示すコードを記述する。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Xml;
using System.ServiceModel.Syndication;

namespace RssReader
{
  class Program
  {
    static void Main(string[] args)
    {
      string url = "http://www.atmarkit.co.jp/rss/rss.xml";

      using (XmlReader rdr = XmlReader.Create(url))
      {
        SyndicationFeed feed = SyndicationFeed.Load(rdr);

        Console.WriteLine("title:" + feed.Title.Text);
        Console.WriteLine("description:" + feed.Description.Text);
        Console.WriteLine("--- items ---");

        foreach (SyndicationItem item in feed.Items) {
          Console.WriteLine("item Title:" + item.Title.Text);
          Console.WriteLine("description:" + item.Summary.Text);
          Console.WriteLine("link:" + (item.Links.Count > 0
                          ? item.Links[0].Uri.AbsolutePath : ""));
        }
      }
    }
  }
}
Imports System.Xml
Imports System.ServiceModel.Syndication

Module Module1
  Sub Main()

    Dim url As String = "http://www.atmarkit.co.jp/rss/rss.xml"

    Using rdr As XmlReader = XmlReader.Create(url)

      Dim feed As SyndicationFeed = SyndicationFeed.Load(rdr)

      Console.WriteLine("title:" + feed.Title.Text)
      Console.WriteLine("description:" + feed.Description.Text)
      Console.WriteLine("--- items ---")

      For Each item As SyndicationItem In feed.Items
        Console.WriteLine("item Title:" + item.Title.Text)
        Console.WriteLine("description:" + item.Summary.Text)
        Console.WriteLine("link:" + If(item.Links.Count > 0, _
                                item.Links(0).Uri.AbsolutePath, ""))
      Next
    End Using
  End Sub
End Module
@ITのRSS 2.0フィードを読み込むサンプル・プログラム(上:C#、下:VB)

title:@IT
description:ITエンジニア対象の技術解説情報&コミュニティサイト
--- items ---
item Title:アイログ、.NET向けグラフィックツールキットの新版発売
description:<p> アイログは6月6日、.NETプラットフォーム向けグラフィックス・ツールキットの最新版、「ILOG Diagrammer for .NET 1.5」と「ILOG Gantt for .NET 3.5」を発売した。RIA開発を支援する製品で、ダイアグラムとガントチャートで、インタラクティブな操作を実…
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/GviRv5ef5dD5/……
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/GviRv5ef5dD5/AJ2sJjlvW0HM?type=1" target="_blank"><img width='468' height='30' src="http://rss.rssad.jp/rss/img/GviRv5ef5dD5/AJ2sJjlvW0HM?type=1" border="0"/></a><br/>
link:http://rss.rssad.jp/rss/artclk/GviRv5ef5dD5/ede96fc7dd4……
item Title:日興コーディアル証券が社内文書検索ソフトを導入
……以下省略……
サンプル・プログラムの実行例

 RSSフィードを読み込み、処理するのはSyndicationFeedクラス(System.ServiceModel.Syndication名前空間)である。このクラスはRSSフィードをXmlReaderクラス(System.Xml名前空間)のインスタンスを使用して読み込む。XmlReaderクラスでは、CreateメソッドでRSSフィードが存在するURLを指定することで、ネットワークから直接XMLデータを読み込むことができる。

 SyndicationFeedオブジェクトからは、RSSフィードに含まれる個々のアイテム(記事)をSyndicationItemクラス(System.ServiceModel.Syndication名前空間)のオブジェクトのコレクションとしてItemsプロパティから取得できる。上記のコードでは、foreachステートメントにより各アイテムについての詳細について表示している。

 SyndicationFeedクラスや、SyndicationItemクラスには、title、descriptionといったRSSフィードで定義されている要素と同じ名前のプロパティが用意されている。ただしこれらの値は、String型ではなく、TextSyndicationContentクラス(System.ServiceModel.Syndication名前空間)のオブジェクトなので、文字列として取得するにはTextプロパティを使用しなければならない。End of Article

利用可能バージョン:.NET Framework 3.5以降
カテゴリ:WCF 処理対象:RSSフィード
使用ライブラリ:SyndicationFeedクラス(System.ServiceModel.Syndication名前空間)
使用ライブラリ:RSSフィードをXmlReaderクラス(System.Xml名前空間)
使用ライブラリ:SyndicationItemクラス(System.ServiceModel.Syndication名前空間)

この記事と関連性の高い別の.NET TIPS
[ASP.NET]RSSフィードをWebフォームで読み込み表示するには?
[ASP.NET]データベースからRSSフィード情報を生成するには?
[ASP.NET]ユーザー・コントロールでパーソナライズ可能なWebパーツを作成するには?
[ASP.NET]PropertyGridEditorPartコントロールでカスタム・プロパティを編集するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間