.NET CoreでRSSフィードをパースしてコンソールに内容を出力する


.NET Core でブログなどの RSS フィードをパースするためのライブラリに CodeHollow.FeedReader というものがあり、NuGet よりインストールができます。CodeHollow.FeedReader は RSS 0.91, 0.92, 1.0, 2.0 と ATOM をサポートしています。

今回はこのライブラリを使用して、コンソールアプリケーションで RSS フィードを読み込んで内容を出力してみます。

なお、環境は Mac (macOS High Sierra 10.13.3) で .NET Core SDK 2.1.4、Visual Studio Code になります。

まず、CodeHollow.FeedReader の現時点(2018/03/17)の最新版を以下のコマンドでインストールします。

$ dotnet add package CodeHollow.FeedReader --version 1.1.1

RSS フィードを読み込み、内容を出力する処理を Program.cs に記述します。今回は、このブログの RSS フィードを使用します。非同期処理がやっかいですが、それ以外は単純な内容ですね。

using CodeHollow.FeedReader;
using System.Threading.Tasks;

//(中略)

    static void Main(string[] args)
    {
        //この Task#Wait() の記法はコンソールアプリだけ。GUIではデッドロックになる。
        Task task =  ReadFeedAsync();
        task.Wait();
    }

    static async Task ReadFeedAsync()
    {
        var reader = await FeedReader.ReadAsync("http://fnya.cocolog-nifty.com/blog/atom.xml");

        foreach(var item in reader.Items){
            Console.WriteLine("Title:{0}", item.Title);
            Console.WriteLine("Link:{0}", item.Link);
        }

    }

実行結果は、以下のようになり正しく値が取得できていることが分かります。

$ dotnet build
$ dotnet run
Title:[.NET Core]Entity Framework CoreでAND検索・OR検索する方法
Link:http://fnya.cocolog-nifty.com/blog/2018/03/net-coreentity-.html
Title:.NET Core な時代にMySQLとPostgreSQLのどちらを選択すべきか
Link:http://fnya.cocolog-nifty.com/blog/2018/03/net-core-mysqlp.html
Title:ASP.NET Core+Entity Framework CoreでコードからPostgreSQLにデータベースを作成する方法
Link:http://fnya.cocolog-nifty.com/blog/2018/03/net-entytyframe.html
Title:.NET Coreのデータベース接続文字列を外部ファイルに保存する
Link:http://fnya.cocolog-nifty.com/blog/2018/03/net-core-9650.html
Title:Entity Framework CoreでPostgresSQLからモデルクラスを自動作成する
Link:http://fnya.cocolog-nifty.com/blog/2018/03/net-entityframe.html
Title:MacにPostgreSQLをインストールする方法
Link:http://fnya.cocolog-nifty.com/blog/2018/03/macpostgresql-b.html
Title:MacのターミナルでMySQLコマンドを日本語入力をしたい
Link:http://fnya.cocolog-nifty.com/blog/2018/03/macmysql-2a01.html
Title:ASP.NET CoreアプリをLinuxにデプロイしてNginxで公開する方法(CentOS7)
Link:http://fnya.cocolog-nifty.com/blog/2018/03/aspnet-corelinu.html
Title:ASP.NET Core アプリが Linux で表示できない場合の解決方法
Link:http://fnya.cocolog-nifty.com/blog/2018/03/aspnet-core-lin.html
Title:How to fix Cannot find compilation library location for package Microsoft.Win32.Registry
Link:http://fnya.cocolog-nifty.com/blog/2018/03/how-to-fix-cann.html