プログラマになる

組み込みエンジニアで主にC言語、時々C#をやっている人の技術メモです。最近はAndroidも少しずつ勉強中

C# XMLファイルの書き込みと読み込み

はじめに

C#XMLファイルの書き込み・読み込みを利用するには下記のクラスを利用する。

名称 説明
XmlWriter XML形式でファイルに書き込む
XmlTextWriter おそらく非推奨でXmlWriterを利用したほうがよい
XmlReader XML形式のファイルを読み込む

サンプルコード

上記のクラスを使ったXMLファイルの書き込みと読み込みのサンプルです。
※書き込むクラスのアクセシビリティはpublicでなければならないので注意が必要です。

public class Person
{
  public string Name {get; set;}
  public string Age { get; set; }
}

public void Save()
{

    var setting = new XmlWriterSettings();
    setting.Indent = true;

    using (var writer = XmlWriter.Create(@"app.xml", setting))
    {
        var serializer = new XmlSerializer(typeof(Person));
        var person = new Person();
        serializer.Serialize(writer, person);
    }
}

public void Load()
{
    using (var reader = XmlReader.Create(@"app.xml"))
    {
        var serializer = new XmlSerializer(typeof(Person));
        var person = serializer.Deserialize(reader);
    }
}

インデント付きで書き込むには?

XmlWriterSettings.Indentをtrueに設定し、
XmlWriterのインスタンスを生成する際に指定します。

    var setting = new XmlWriterSettings();
    setting.Indent = true;
    var writer = XmlWriter.Create(@"app.xml", setting)

コレクションを書き込むには?

内部に配列を持つコレクションクラスを作成します。

  [XmlRoot("Persons")]
  public class PersonCollection
  {
      [XmlElement(Type = typeof(Person), ElementName = "Person")]
      public Person[] Persons { get; set; }
  }
  
  var serializer = new XmlSerializer(typeof(Persons));
  var persons = new Persons();
  serializer.Serialize(writer, persons);