.NET TIPS [ASP.NET]RSSフィードをWebフォームで読み込み表示するには?山田 祥寛2006/01/06 |
|
|
いまやRSS(RDF Site Summary)は、サイト・コンテンツのサマリ情報(主に新着記事情報やニュースなど)を配信するための標準的かつ有効な手段だ。スパムメールのはんらんなどによって、メール媒体による情報配信の効果が薄れつつある昨今、スパムとは無縁なRSSの重要性はますます高まっているともいえるだろう。
「TIPS:[ASP.NET]データベースからRSSフィード情報を生成するには?」では、自サイト上でRSSフィードを動的に生成する手段を紹介したが、もちろん、RSSとは自ら発行するためだけに使うものではない。インターネット上のニュース・サイトやBlogサイトなどで公開されているRSSフィードを引用することで、自サイトでポータル的に複数サイトの新着情報を集約することも可能だ。
そこで本稿では、RSSフィード引用の例として、筆者が運営する「サーバサイド技術の学び舎 - WINGS」で公開しているRSSフィード(http://www.wings.msn.to/contents/rss.php)を題材にし、RSSフィードからWebフォーム上に新着記事一覧を作成してみることにしよう。
1. XSLTスタイルシートを用意する
本サンプル・プログラムを利用する場合、あらかじめ仮想ディレクトリ上に以下のようなXSLTスタイルシートを用意しておく必要がある。このXSLTスタイルシートは、外部サイトから取得したRSSフィードをHTML形式に変換するためのものだ。
|
|
RSSフィードをHTML文書に変換するためのXSLTスタイルシート(rss10.xsl) | |
このXSLTスタイルシートではRSSフィード上の新着情報10件を表示する。表示件数を変更したい場合は太字部分を適切な値に変更すればよい。 |
本稿ではXSLTに関する詳細は割愛するが、興味のある方は「サンプルで覚えるXSLTプログラミング」などの情報を参考にするとよい。このXSLTスタイルシートでは、RSSフィード上の新着情報を最新10件まで表示しているが、表示件数を変更したい場合は、上記リストの太字部分を適宜変更していただきたい。
2. XmlコントロールでXSLT変換を行う
後は、WebフォームであるrssReader_cs.aspx(rssReader_vb.aspx)でRSSフィードを取得し、上記1で作成したXSLTスタイルシートに関連付けるだけだ。
ASP.NETには、XSLT変換を行うためのサーバ・コントロールとしてXmlコントロールが用意されているので、本稿でもこれを利用してみよう。
|
|
RSSフィードをXSLT変換するためのWebフォーム(C#版:rssReader_cs.aspx) |
|
|
RSSフィードをXSLT変換するためのWebフォーム(VB.NET版:rssReader_vb.aspx) |
Xmlコントロールの使い方は極めてシンプルで、変換対象のXML文書と、変換ルールを示したXSLTスタイルシートをプロパティにセットするだけだ。後はXmlコントロールが「.xml」および「.xsl」ファイルの読み込みから解析、変換、出力処理までを自動で行ってくれる。ここで注目していただきたいのは、以下の2点だ。
(1)データ型によって使用するプロパティが異なる
Xmlコントロールでは、XML文書/XSLTスタイルシートを、それぞれ文字列、ファイル(パス)、オブジェクトという3つの形式で受け取ることができる。以下に、それぞれの型に応じて使用するプロパティをまとめておこう。
プロパティ | 概要 |
DocumentContent | 変換対象のXML文書(文字列) |
DocumentSource | 変換対象のXML文書(ファイルへのパス) |
Document | 変換対象のXML文書(XmlDocumentオブジェクト) |
TransformSource | 変換ルールを記述したXSLTスタイルシート(ファイルへのパス) |
Transform | 変換ルールを記述したXSLTスタイルシート(XslTransformオブジェクト) |
Xmlコントロールの主要なプロパティ |
本稿のサンプル・プログラムでは、RSSフィードを文字列として取得しているので、その文字列をDocumentContentプロパティへ、XSLTスタイルシートはファイルシステム上からファイルとして取得しているので、そのパス名をTransformSourceプロパティへ、それぞれセットしている。
(2)ネットワーク上のリソースを取得するのはWebClientクラスの役割
DocumentSource、TransformSourceなどのプロパティには、URLを指定することはできない。従って、今回のようにイントラネットまたはインターネット経由のリソースを取得するには、WebClientクラス(System.Net名前空間)を利用する必要がある。
本稿のサンプル・プログラムでは、WebClientクラスのDownloadDataメソッドを利用して、指定されたURLからRSSフィードを取得している。DownloadDataメソッドは取得したデータをバイト配列として返すので、Encodingクラス(System.Text名前空間)のGetStringメソッドで、指定された文字エンコーディングに従って、文字列に変換する必要がある。Encodingオブジェクトは、EncodingクラスのGetEncodingメソッドで取得することが可能だ。
以上を理解したら、さっそくサンプル・アプリケーションを実行してみよう。以下のように、外部サイトから取得したRSSフィードがリスト表示されれば成功だ。
rssReader_cs.aspx(rssReader_vb.aspx)の実行結果 |
なお、本稿で扱ったサンプルはRSS 1.0に対応するものだ。そのほかのRSSのバージョンに対応するには、適宜、rss10.xslの内容を書き換える必要がある。
カテゴリ:Webフォーム 処理対象:RSS カテゴリ:Webフォーム 処理対象:Xmlコントロール 使用ライブラリ:Xmlコントロール 使用ライブラリ:WebClientクラス(System.Net名前空間) 使用ライブラリ:Encodingクラス(System.Text名前空間) 関連TIPS:[ASP.NET]データベースからRSSフィード情報を生成するには? |
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|