はじめに
今回は、Visual Studio for Macを利用してRSS情報を読み取る処理をメモとして残しておきます。
RSSを読み込む
RSS情報を読み込みます。
ここでは、RSSを読み込み、標準出力で結果を出力しています。
///
/// RSS基本情報
///
private class RssInfo
{
public string Title { get; set; }
public string Description { get; set; }
public string Link { get; set; }
public string LastBuildDate { get; set; }
}
///
/// RSSのITEMセクション情報プロパティ
///
private class RssItemInfo
{
public string Title { get; set; }
public string Link { get; set; }
public string PubDate { get; set; }
}
static void Main(string[] args)
{
Console.WriteLine($"RSS情報を読み込む");
// 取得する記事の件数
int readCnt = 3;
try
{
string rss = "https://feeld-uni.com/feed";
XElement element = XElement.Load(rss);
// channelを取得する・・・(1)
XElement channelElement = element.Element("channel");
RssInfo rssInfo = new RssInfo();
rssInfo.Title = channelElement.Element("title").Value;
rssInfo.Description = channelElement.Element("description").Value;
rssInfo.Link = channelElement.Element("link").Value;
rssInfo.LastBuildDate = channelElement.Element("lastBuildDate").Value;
// itemを取得する・・・(2)
IEnumerable elementItems = channelElement.Elements("item");
List rssItemInfos = new List();
int cnt = 0;
foreach(XElement elmItem in elementItems)
{
// 取得記事数が指定数に到達したらループ処理終了
if (cnt == readCnt)
{
break;
}
RssItemInfo itemInfo = new RssItemInfo();
itemInfo.Title = elmItem.Element("title").Value;
itemInfo.Link = elmItem.Element("link").Value;
itemInfo.PubDate = elmItem.Element("pubDate").Value;
rssItemInfos.Add(itemInfo);
cnt++;
}
// RSS情報を出力・・・(3)
Console.WriteLine("------------------------------------------------");
Console.WriteLine("RSS Information");
Console.WriteLine("------------------------------------------------");
Console.WriteLine($"Title : {rssInfo.Title}");
Console.WriteLine($"Description : {rssInfo.Description}");
Console.WriteLine($"Link : {rssInfo.Link}");
Console.WriteLine($"LastBuildDate : {rssInfo.LastBuildDate}");
Console.WriteLine();
Console.WriteLine("------------------------------------------------");
Console.WriteLine("RSS Item Information");
Console.WriteLine("------------------------------------------------");
foreach(RssItemInfo itemInfo in rssItemInfos)
{
Console.WriteLine($"Title : {itemInfo.Title}");
Console.WriteLine($"PubDate : {itemInfo.PubDate}");
Console.WriteLine($"Link : {itemInfo.Link}");
Console.WriteLine();
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}
(1)・・・RSS情報で取得したXMl情報のchannelタグを読み込みます。channelの子要素として対象サイトのメイン情報と、記事の情報、画像情報などがあります。
私のサイトの情報は下記の通りです。
FEELD BLOG
https://feeld-uni.com
FEEL + FIELD = FEELD. 感じたままビジネスからプログラミング・デザイン等 日々興味を持った分野の情報を配信しています
Sat, 21 Dec 2019 13:43:10 +0000
ja
FEELD BLOG
https://feeld-uni.com
・・・
・・・
-
Visual Studio for MacでC#コンソールアプリを作るまで
https://feeld-uni.com/entry/2019/12/21/224310
Sat, 21 Dec 2019 13:43:10 +0000
・・・
・・・
(2)・・・channelの子要素である「item」情報をすべて取得します。今回の例では3記事まで情報を取得しています。
(3)・・・一度情報を取得後、標準出力で出力しています。結果は下記の通りです。
RSS情報を読み込む
------------------------------------------------
RSS Information
------------------------------------------------
Title : FEELD BLOG
Description : FEEL + FIELD = FEELD. 感じたままビジネスからプログラミング・デザイン等 日々興味を持った分野の情報を配信しています
Link : https://feeld-uni.com
LastBuildDate : Sat, 21 Dec 2019 13:43:10 +0000
------------------------------------------------
RSS Item Information
------------------------------------------------
Title : Visual Studio for MacでC#コンソールアプリを作るまで
PubDate : Sat, 21 Dec 2019 13:43:10 +0000
Link : https://feeld-uni.com/entry/2019/12/21/224310
Title : XMLデータをDataSetに読み込む方法
PubDate : Sun, 15 Dec 2019 11:48:33 +0000
Link : https://feeld-uni.com/entry/2019/12/15/204833
Title : [C#] List型データをSqlBulkCopyする
PubDate : Wed, 06 Nov 2019 12:29:58 +0000
Link : https://feeld-uni.com/entry/2019/11/06/212958
最後に
いかがでしたでしょうか、今回は1サイトのブログから3記事の情報を取得するようにしています。
サイトによっては取得できる情報も変わります。
それぞれパターンを用意しておくこと良いかと思います。