C# でオブジェクトを XML にシリアル化する

Muhammad Maisam Abbas 2024年2月16日
C# でオブジェクトを XML にシリアル化する

このチュートリアルでは、クラスオブジェクトを C# で XML ファイルまたは文字列にシリアル化する方法について説明します。

C# の XmlSerializer クラスを使用してオブジェクトを XML にシリアル化する

シリアル化とは、クラスオブジェクトを XML またはバイナリ形式に変換することを意味します。XmlSerializer クラスは、C# でクラスオブジェクトを XML に、またはその逆に変換します。XmlSerializer.Serialize() メソッドは、クラスオブジェクトのすべてのパブリックフィールドとプロパティを XML 形式に変換します。XML ファイルまたは文字列にクラスを書き込む場合は、public アクセス指定子を使用してクラスを定義する必要があります。次のコード例は、C# の XmlSerializer クラスを使用してクラスオブジェクトを XML 文字列変数にシリアル化する方法を示しています。

using System;
using System.IO;
using System.Linq;
using System.Xml;
using System.Xml.Serialization;

namespace serialize_object {
  public class Sample {
    public string value { get; set; }
  }
  class Program {
    static void Main(string[] args) {
      Sample obj = new Sample();
      obj.value = "this is some value";
      string xml = "";
      XmlSerializer serializer = new XmlSerializer(typeof(Sample));
      using (var sww = new StringWriter()) {
        using (XmlWriter writer = XmlWriter.Create(sww)) {
          serializer.Serialize(writer, obj);
          xml = sww.ToString();  // Your XML
        }
      }
      Console.WriteLine(xml);
    }
  }
}

出力:

<?xml version="1.0" encoding="utf-16"?><Sample xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema"><value>this is some value</value></Sample>

上記のコードでは、C# の XmlSerializer.Serialize() 関数を使用して、クラス Sample のオブジェクト obj を XML 文字列変数 xml にシリアル化しました。最初に、typeof(Sample) パラメーターを渡すことにより、XmlSerializer クラスのインスタンスを初期化しました。これにより、タイプ SampleXmlSerializer クラスのインスタンスが作成されます。次に、データを文字列変数に書き込むための StringWriter クラスのインスタンスを作成しました。次に、StringWriter クラスのインスタンスに書き込むための XmlWriter クラスのインスタンスを作成しました。次に、serializer.Serialize(writer, obj) を使用してオブジェクトを StringWriter クラスのインスタンスに書き込み、ToString() 関数を使用して結果を文字列変数 xml に格納しました。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp XML

関連記事 - Csharp Object