sitemap.xmlはSEOに欠かせないファイルの1つです。
sitemap.xml を生成する方法はいろいろありますが、c#でも生成することができます。
nugetでライブラリを追加して呼び出すだけなので、めちゃくちゃ簡単です。
この記事は、c# でsitemap.xml を生成する方法を紹介します。
使用するライブラリ
nugetで公開されているxsitemap
というライブラリを使用します。
- xsitemap
ライセンスはMITライセンスになっているようです。
xsitemap を使用した sitemap.xml の生成方法
using句
以下の通り、X.Web.Sitemap
を記述します。
using X.Web.Sitemap;
sitemap オブジェクト生成
new Sitemap() でオブジェクトを生成します。
//X.Web.Sitemap Object
var sitemap = new Sitemap();
ページURLとタイムスタンプの取得
sitemap.xmlに出力するページのURLとタイムスタンプを取得します。
この例では、タイムスタンプはシステム日付時刻としていますが、実際にはページURLに対応する正しいタイムスタンプが必要です。
string pageURL = $"https://example.net/page1.html";
//Get Timestamp
DateTime pageTimeStamp = DateTime.Now;
sitemapオブジェクトに追加
Addメソッドでオブジェクトに追加していきますが、CreateSitemapUrlメソッドの返り値を使用します。
//
sitemap.Add(CreateSitemapUrl(pageURL, pageTimeStamp));
CreateSitemapUrlメソッド
CreateSitemapUrlメソッドは以下のとおりです。
X.Web.Sitemap.Url を返り値とします。
このメソッドの引数は、先ほど取得したページURLとタイムスタンプです。
private static X.Web.Sitemap.Url CreateSitemapUrl(string url, DateTime pageTimeStamp)
{
return new X.Web.Sitemap.Url
{
ChangeFrequency = ChangeFrequency.Daily,
Location = url,
Priority = 0.5,
TimeStamp = pageTimeStamp
};
}
繰り返し
ページURL・タイムスタンプの取得から、sitemapオブジェクトへの追加を、必要なURLだけ繰り返します。
sitemap.xmlに出力したいURLが複数存在する場合は、その数だけsitemap.Add()を繰り返しましょう。
sitemap.xml 出力
最後に、sitemap.xmlの出力先ファイルパスを指定し、出力しましょう。
string SitemapXMLOutputFilePath = "./sitemap.xml";
sitemap.Save(SitemapXMLOutputFilePath);
出力例
以下は、このライブラリを使用して出力したsitemap.xmlです。
コピペ可能なソースコードを検索できる https://pacode.net/ のsitemap.xml です。
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://pacode.net/details/16A39A0812F19AE643B1D4B3F41772FE</loc>
<lastmod>2022-04-26T11:55:52+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pacode.net/details/1F2CF6A74D8863D6A6ED4D19119E889B</loc>
<lastmod>2022-04-26T11:55:52+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pacode.net/details/730EC33F20EDA5031A2BACE1061682F8</loc>
<lastmod>2022-04-26T11:55:52+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pacode.net/details/A42BDD15B7C15737CBC829F97689BC14</loc>
<lastmod>2022-04-26T11:55:52+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
</urlset>
ソースコード全文
今回紹介したソースコードの全文は以下のとおりです。
コピペ用にしてみてください。
using X.Web.Sitemap;
namespace GenSitemap
{
class Program
{
static void Main(string[] args)
{
//X.Web.Sitemap Object
var sitemap = new Sitemap();
string pageURL = $"https://example.net/page1.html";
//Get Timestamp
DateTime pageTimeStamp = DateTime.Now;
sitemap.Add(CreateSitemapUrl(pageURL, pageTimeStamp));
//End Loop
string SitemapXMLOutputFilePath = "./sitemap.xml";
sitemap.Save(SitemapXMLOutputFilePath);
}
private static X.Web.Sitemap.Url CreateSitemapUrl(string url, DateTime pageTimeStamp)
{
return new X.Web.Sitemap.Url
{
ChangeFrequency = ChangeFrequency.Daily,
Location = url,
Priority = 0.5,
TimeStamp = pageTimeStamp
};
}
}
}
おすすめ本 c#コードレシピ集
c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。
2021年8月に発売された本で、全部で385個のレシピが収録されています。
ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。
Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
コメント