c# Markdig を使用して Markdown から HTML に変換する方法

Markdig は Markdown を HTML に変換する.NETライブラリです。nuget から簡単にインストールして使用することができます。

この記事では、Markdigを使用してMarkdownからHTMLに変換する方法を紹介します。

1. Markdig のインストール

MarkdigはNugetに公開されています。URLは以下のとおりです。

Markdig 0.34.0
A fast, powerful, CommonMark compliant, extensible Markdown processor for .NET with 20+ builtin extensions (pipetables, footnotes, definition lists... etc.)

以下のコマンドで簡単にインストールが可能です。

> dotnet add package Markdig

2. Markdown ファイルを読み込み、HTMLに変換してファイルに出力するソースコード

以下のようになります。


using System;
using Markdig;

namespace MdBlogConverter
{
    class Program
    {
        static void Main(string[] args)
        {

            string mdFolderPath = "./01_Input";
            string outputFolderPath = "./02_Output/";

            // get file list. 
            string[] files = System.IO.Directory.GetFiles(mdFolderPath, "*.md");
            // loop
            for(int i = 0; i < files.Length; i++)
            {

                outputCsHtmlFilePath = outputFolderPath + System.IO.Path.GetFileNameWithoutExtension(files[i]) + .html;

                // read all text from file and set to fileContents
                string fileContents = System.IO.File.ReadAllText(files[i]);

                //convert Mark down to html and set to mdContents
                Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();

                string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);

                //write mark down data into outputCsHtmlFilePath
                System.IO.File.AppendAllText(outputCsHtmlFilePath, mdContents);

            }

        }
    }
}

まず、インプットフォルダは、カレントディレクトリの./01_Inputフォルダとします。

アウトプットフォルダは、カレントディレクトリの./02_Output/フォルダとします。

以下のコードで、インプットフォルダに格納されている *.mdファイルを検出してループ処理します。

    // get file list. 
    string[] files = System.IO.Directory.GetFiles(mdFolderPath, "*.md");
    // loop
    for(int i = 0; i < files.Length; i++)
    {
        ...
    }

インプットのファイルを全行読み込みます。

    string fileContents = System.IO.File.ReadAllText(files[i]);

MarkdownPipeline を定義します。このパイプラインを定義することで、表形式のMarkdownをHTMLに変換することができるようになります。

    Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();

MarkdownをHTMLに変換し、変数に格納します。

    string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);

アウトプットファイルへ出力します。

    System.IO.File.AppendAllText(outputCsHtmlFilePath, mdContents);

表形式のMarkdownがHTMLに変換されないときの対処方法

パイプラインが正しく定義されているか、HTML変換時にパイプラインが使用されているかを確認してください。

    Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();

    string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);

おすすめ本 c#コードレシピ集

c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。

2021年8月に発売された本で、全部で385個のレシピが収録されています。

ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。

Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。

コメント

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