【めちゃ簡単】c# でsitemap.xmlを生成する方法

sitemap.xmlはSEOに欠かせないファイルの1つです。

sitemap.xml を生成する方法はいろいろありますが、c#でも生成することができます。

nugetでライブラリを追加して呼び出すだけなので、めちゃくちゃ簡単です。

この記事は、c# でsitemap.xml を生成する方法を紹介します。

使用するライブラリ

nugetで公開されているxsitemapというライブラリを使用します。

  • xsitemap
xsitemap 2.9.2
This library allows you quickly and easily generate sitemap files.

ライセンスはMITライセンスになっているようです。

NuGet Gallery | License of xsitemap 2.1.0

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対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。

コメント

タイトルとURLをコピーしました