C# で XML を XSLT で変換する方法

0 件のコメント

ここでは、XMLファイル と XSLTファイル を読み込んで、別のフォーマットに変換する方法を記載します。 ただ変換させるだけの処理なのでいきなり サンプルコード を以下に載せます。

source.xmltransform.xslt に従って変換する サンプルコード です。 変換した結果を文字列として再利用したいと考えているので、ここでの出力先は StringBuilder としています。

サンプルコード

namespace SampleConsoleApplication
{
    using System;
    using System.Text;
    using System.Xml;
    using System.Xml.Xsl;

    class Program
    {
        static void Main(string[] args)
        {
            var inputUri = @"D:\source.xml";
            var stylesheetUri = @"D:\transform.xslt";

            // XSLTファイル の読み込み
            var xslt = new XslCompiledTransform();
            xslt.Load(stylesheetUri);

            // 出力先を 文字列 として準備
            var output = new StringBuilder();

            // 出力フォーマット の指定
            var settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.OmitXmlDeclaration = false;

            // XSLT を利用した 変換処理
            using (var writer = XmlWriter.Create(output, settings))
            {
                xslt.Transform(inputUri, writer);
            }

            // 処理結果を出力
            Console.WriteLine(output.ToString());
        }
    }
}

いくつかの記事では XslTransform クラス を利用して変換しているようでしたが、このクラスは .NET Framework 2.0 以降は廃止されているようです。 基本的にはその後継となる XslCompiledTransform クラス を利用して変換が推奨みたいです。

今回、以下のサイトを参考にしました。