Ⅰ. はじめに
.NET Framework 3.5以降であれば Atom 1.0 と RSS 2.0を対象にした SyndicationFeed があるのですが、RSS 1.0はサポートされていません。
RSS 1.0 を手書きで解析するときのメモです。
Ⅱ. プログラム
解析対象のXML(GIGAZINEのRSS1.0のFeedを利用しました)
https://gist.github.com/anonymous/19883bc8c892ca8f8ceaa5937257a83e
static void Main(string[] args) { var xml = new XmlDocument(); xml.Load("http://feed.rssad.jp/rss/gigazine/rss_1.0"); var nsmgr = new XmlNamespaceManager(xml.NameTable); nsmgr.AddNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); nsmgr.AddNamespace("rss", "http://purl.org/rss/1.0/"); nsmgr.AddNamespace("dc", "http://purl.org/dc/elements/1.1/"); foreach (XmlElement node in xml.SelectNodes("/rdf:RDF/rss:item", nsmgr)) { var title = node.SelectNodes("rss:title", nsmgr)[0].InnerText; var link = node.SelectNodes("rss:link", nsmgr)[0].InnerText; var description = node.SelectNodes("rss:description", nsmgr)[0].InnerText; var date = DateTime.Parse(node.SelectNodes("dc:date", nsmgr)[0].InnerText); Console.WriteLine("-------"); Console.WriteLine($"title: {title}"); Console.WriteLine($"link: {link}"); Console.WriteLine($"description: {description}"); Console.WriteLine($"date: {date}"); } }
Ⅲ. 実行結果