勤め先の Web サイトで RSS を受け取って表示したいってことだったので、ちょこちょこっと書きました。
aspx は単に DataList を置いただけです。以下のような感じ。
<asp:DataList ID="DataList1" runat="server"> <ItemTemplate> <asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Link") %>' Text='<%# "[" + DataBinder.Eval(Container.DataItem, "Published", "{0:MM/dd HH:mm}") + "] " + DataBinder.Eval(Container.DataItem, "Title") %>'></asp:HyperLink> </ItemTemplate> </asp:DataList>
aspx.cs で以下のよう DataList にデータバインドして表示します。
protected void Page_Load(object sender, EventArgs e) { var rss = XElement.Load("http://shinichiaoyagiblog.divakk.co.jp/feeds/posts/default"); var ns = XNamespace.Get("http://www.w3.org/2005/Atom"); var titles = from entry in rss.Elements(ns + "entry") select new { Published = DateTime.Parse(entry.Element(ns + "published").Value), Title = entry.Element(ns + "title").Value, Link = entry.Elements(ns + "link").Single(x => (x.Attribute("rel").Value == "alternate")).Attribute("href").Value, Author = entry.Element(ns + "author").Element(ns + "name").Value }; this.DataList1.DataSource = titles.Take(5); // 最初の 5件 this.DataList1.DataBind(); }
Linq を使ってごく普通に RSS を取ってるだけです。
あぁ、RSS って書いてますが、上記は Atom 専用のコードになっちゃってます。
あと、例外なんかもまったく考慮してないので、そのあたりはもうちょっとちゃんとした方がいいかもしれません。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。