はてなブログの RSS フィードをダウンロードしてパースするサンプルを書いてみた。
RSS フィードのダウンロードは HttpClient.GetStringAsync
で一発。
RSS フィードは所詮 XML なので、パースは LINQ to XML でこれまた一発。
簡単過ぎてわざわざブログに書くまでもないかと思ったけど、 LINQ to XML 使う箇所はうっかり忘れてしまいそうな気がしたので、 外部記憶として書いておくことにした。
using System; using System.Linq; using System.Net.Http; using System.Threading.Tasks; using System.Xml.Linq; namespace RssSample { class Program { static void Main(string[] args) { Console.Title = "RssSample"; MainAsync().GetAwaiter().GetResult(); Console.ReadLine(); } static async Task MainAsync() { var client = new HttpClient(); var rss = await client.GetStringAsync( "https://tnakamura.hatenablog.com/rss"); var xdoc = XDocument.Parse(rss); var items = from a in xdoc.Descendants() where a.Name == "item" let title = from b in a.Descendants() where b.Name == "title" select b.Value let link = from c in a.Descendants() where c.Name == "link" select c.Value select new Item { Title = title.FirstOrDefault(), Link = link.FirstOrDefault(), }; foreach (var i in items) { Console.WriteLine(i.Title); Console.WriteLine(i.Link); Console.WriteLine(); } } } public class Item { public string Title { get; set; } public string Link { get; set; } } }
実行結果は下の通り。
今回選んだのがはてなブログだったというだけで、 URL さえ分かっていれば他の RSS フィードでも同じようにダウンロードしてパースできる。