読者です 読者をやめる 読者になる 読者になる

ぺやろぐ

ゲームと奈々ちゃんと時々プログラミング

〔C#〕XMLの読み書き

C#

今回は気が向いたのと備忘録も兼ねて、C#でのXMLファイルの読み書きについて。
単純な読み書きだけだから、細かい処理とかはまたいつか。

目的

XMLファイルの取り扱いを学ぶ。

実装

まず、保存するデータを持つクラスを作成

よくあるPersonクラス

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

    public string Age { get; set; }
}

こんなクラスがあったとする。

まずは、XMLに書き込む処理

public void SaveXml(List<Person> personList)
{
    System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Person[])); 

    // Data.xmlは保存するファイル名

    using (System.IO.FileStream fs = new System.IO.FileStream("Data.xml", System.IO.FileMode.Create)) 
    {
        serializer.Serialize(fs, personList.ToArray());
    }
}

これで、Personのリストをxmlに保存することが可能。

次に、xmlからの読み込み処理

public List<Person> LoadXml() 
{
    Person[] loadAry;

    System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Person[]));

    using (System.IO.StreamReader sr = new System.IO.StreamReader("Data.xml", new System.Text.UTF8Encoding(false)))
    {
        loadAry = (Person[])serializer.Deserialize(sr);
    }

    return loadAry.ToList();
}

これでXMLの中身を、Personのリストで返してくれる。

まとめ

xmlの中身は

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Person>
        <Name>aaaaa</Name>
        <Age>20</Age>
    </Person>
</ArrayOfPerson>

こんな感じになると思われる。
Nameの「aaaaa」とAgeの「20」は保存する前にリストに入れたデータ。

コード内ではリストで保持するので、データをごにょごにょしやすい。