What is the right/best way to get data from an RSS feed using ASP.Net Core 1.0 (RC2) in C#.
I want to work with the data in the RSS feed from my Wordpress blog which is https://blogs.msdn.microsoft.com/martinkearn/feed/
I know that in ASP.net 4.x, you'd use RssReader
or SyndicationFeed
but I cannot find an equivalent for ASP.net core.
This is as far as I have got which returns the raw feed but I do not know how to extract the data from it. I want to enumerate the items and get the title
and description
from each one
var feedUrl = "https://blogs.msdn.microsoft.com/martinkearn/feed/";
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(feedUrl);
var responseMessage = await client.GetAsync(feedUrl);
var responseString = await responseMessage.Content.ReadAsStringAsync();
}
According to this issue, System.ServiceModel.Syndication has not yet been ported to ASP.NET Core. Currently, this leaves you with 2 options:
SyndicationFeed
Target the full .NET framework
This is undoubtedly the easiest approach depending on your requirements.
If you will be deploying to windows only then you can run ASP.NET Core on top of the .NET 4.X framework. To do this, update your
project.json
from something like thisto this:
Build your own XML Parser
This will give you the most flexibility, in that you will still be able to run cross platform using the .NET Core framework. It requires a little more work to deserialise the string you have already obtained, but there are lots of examples on how to do just this, e.g. http://www.anotherchris.net/csharp/simplified-csharp-atom-and-rss-feed-parser/
For the sake of completeness, I'll include the final code which is a stripped down version of the sample @Sock linked to in the 'Build your own XML Parser' section of the answer. @Sock's answer is still the most complete answer, but this sample should be useful for anyone looking for a quick, simple code sample for ASP.NET Core.
Model
Controller