GoogleCalendarAPI + LinqToXMLで休日を取得する方法
があまりにも簡単すぎて思わず吹き出した。
LinqToXMLでGoogleCalendarAPIにアクセスし、
2007年1月1日から2008年1月1日までの休日をピックアップしてみる。
using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; using System.Text; namespace Sample { class Program { static void Main(string[] args) { string URL = "http://www.google.com/calendar/feeds/japanese@holiday.calendar.google.com/public/full?start-min=2007-01-01&start-max=2008-01-01"; string ATOM = "{http://www.w3.org/2005/Atom}"; string GOOGLE = "{http://schemas.google.com/g/2005}"; XDocument doc = XDocument.Load(URL); var query = from entry in doc.Root.Elements(ATOM + "entry") from when in entry.Elements(GOOGLE + "when") orderby when.Attribute("startTime").Value select new { Title=entry.Element(ATOM + "title").Value, Date=when.Attribute("startTime").Value }; foreach (var item in query) { Console.WriteLine("{0}は{1}", item.Date, item.Title); } Console.Read(); } } }
実行結果はこんな感じ。
2007-01-01は元日 2007-01-08は成人の日 2007-02-11は建国記念の日 2007-02-12は振替休日 2007-03-21は春分の日 2007-04-29はみどりの日 2007-04-30は振替休日 2007-05-03は憲法記念日 2007-05-04は国民の休日 2007-05-05はこどもの日 2007-07-16は海の日 2007-09-17は敬老の日 2007-09-23は秋分の日 2007-09-24は振替休日 2007-10-08は体育の日 2007-11-03は文化の日 2007-11-23は勤労感謝の日 2007-12-23は天皇誕生日 2007-12-24は振替休日
かつてRSSフィードを取得するRSS.NETとかあったけど、
LinqToXMLがあれば
XMLで公開されているWeb上のリソースを取得するためのライブラリなんて
もういらなくね?
楽すぎる〜(^0_0^)