- 2006-01-30 (月) 21:15
- 未分類
ASP.net でRSSフィードを取得する(拙い)コードを書いてみました。
[ASP.NET]RSSフィードをWebフォームで読み込み表示するには?が参考になりましたが、XSLT使うと面倒そうだし自分で処理しました。JSONで出すことも考えてみたけど、戻ってきたデータをeval()できない(TT まだ修行不足のようです。エンコードは普通はUTF-8が多いと思うので変更しておきました。
public void Page_Load(Object sender, EventArgs e)
{
string url;
int fcount = 100;
int dcount = 24;
byte[] data;
Encoding encoding = Encoding.UTF8;
Regex regex = new Regex("<[^<]*>");
if (Request["feed"] == null) return;
url = Request["feed"];
if (Request["fcount"] != null) fcount = int.Parse(Request["fcount"]);
if (Request["dcount"] != null) dcount = int.Parse(Request["dcount"]);
WebClient client = new WebClient();
data = client.DownloadData(url);
XmlDocument doc = new XmlDocument();
doc.LoadXml(encoding.GetString(data));
XmlNodeList list = doc.GetElementsByTagName("item");
Response.Write("<dl'>");
foreach (XmlNode node in list)
{
Response.Write("<dt>");
Response.Write(string.Format("<a href=\"{0}\">{1}</a>",
node["link"].InnerText,
node["title"].InnerText));
Response.Write("</dt>");
Response.Write("<dd>");
string description = node["description"].InnerText;
description = regex.Replace(description, "");
if (description.Length > dcount)
description = description.Substring(0, dcount) + "...";
Response.Write(description);
Response.Write("</dd>");
Response.Write("<dd>");
if (node["pubDate"] == null)
Response.Write(node["dc:date"].InnerText); /* RSS1.0 */
else
Response.Write(node["pubDate"].InnerText);
Response.Write("</dd>");
if (--fcount <= 0) break;
}
Response.Write("</dl>");
}
dlリストで表示するようにしています。fcountは取得するフィードの数、dcountはDescriptionの最大次数です。例えばhttp://www.be-styles.net/scripts/GetRSS.aspx?feed=http://rayerd.at.webry.info/rss/index.rdf&fcount=20&dcount=30で、某暴走騎士のブログの更新状況を見ることができるわけです。さっそくトップページに埋め込んでみました。でも、良く考えれば、MovableTypeで吐き出してもよかったなぁ・・・。リンクページを改造してRSSリーダー代わりにしようか。
もし外部から使いたい人がいたら使ってもらってもかまわないけど、―いないですよね(*´△`*)
- Newer: ぷち伝言板をクラスにしてみる。
- Older: [復旧]ぶち掲示板がFireFoxで動かない

