■ はじめに
C# でXMLシリアライズ・デシリアライズを XmlSerializerクラスを使って行う
後日談
* .NET3.0以上であれば、DataContractSerializerクラスを使った方がいい => 詳細は、以下の関連記事を参照のこと。https://dk521123.hatenablog.com/entry/37973448
■ XMLシリアライズ
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
[XmlIgnoreAttribute] // シリアル化しないようにする
public string Sex { get; set; }
[XmlElement("国")] // 要素名を変更する
public string Country { get; set; }
}
BindingList<Person> list = new BindingList<Person>();
private void button1_Click(object sender, EventArgs e)
{
Person person = new Person();
person.Name = this.textBox1.Text;
person.Age = Int32.Parse(this.textBox2.Text);
person.Sex = this.comboBox1.Text;
person.Country = this.textBox3.Text;
this.list.Add(person);
this.OutputObjectIntoXml(this.list, @"C:\test.xml");
}
private void OutputObjectIntoXml<T>(T t,string path)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (FileStream fs = new FileStream(path, FileMode.Create))
{
xmlSerializer.Serialize(fs, t);
}
}
■ XMLデシリアライズ
private void button2_Click(object sender, EventArgs e)
{
this.list = this.InputObjectFromXml<BindingList<Person>>(@"C:\test.xml");
this.dataGridView1.DataSource = this.list;
}
private T InputObjectFromXml<T>(string path)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
T returnVal;
using (FileStream fs = new FileStream(path, FileMode.Open))
{
returnVal = (T)xmlSerializer.Deserialize(fs);
}
return returnVal;
}
関連記事
XML関連
C# でXMLファイルを扱うには ~ 入門編 ~https://dk521123.hatenablog.com/entry/32868509
C# でXMLシリアライズ・デシリアライズ ~ DataContractSerializerクラス ~
https://dk521123.hatenablog.com/entry/37973448
XML Serializeで、xmlnsなどの余計なタグを削除する
https://dk521123.hatenablog.com/entry/24459035