■ はじめに
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