■ サンプル
Person.cs
XML Serializeを行う対象クラス[Serializable()] public class Person { public Person() { this.Company = new Company(); } public int id; public string Name { get; set; } public int Age { get; set; } [XmlIgnoreAttribute] // シリアル化しないようにする public string Sex { get; set; } [XmlElement("国")] // 要素名を変更する public string Country { get; set; } public Company Company { get; set; } }
Company.cs
public class Company { public string CompanyName { get; set; } }
■ xmlnsなどの余計なタグを削除しないパターン
https://blogs.yahoo.co.jp/dk521123/22166698.htmlと同じ。
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; person.Company.CompanyName = this.textBox4.Text; this.list.Add(person); this.OutputObjectIntoXml(this.list, @"C:\test1.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); } }
■ xmlnsなどの余計なタグを削除するパターン
private void button2_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; person.Company.CompanyName = this.textBox4.Text; this.list.Add(person); this.OutputObjectIntoXmlEx(list, @"C:\test2.xml"); } private void OutputObjectIntoXmlEx<T>(T t, string path) { XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces(); xmlSerializerNamespaces.Add(String.Empty, String.Empty); XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); using (FileStream fs = new FileStream(path, FileMode.Create)) { xmlSerializer.Serialize(fs, t, xmlSerializerNamespaces); } }
出力
出力1:test1.xml<?xml version="1.0"?> <ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="">http://www.w3.org/2001/XMLSchema"> <Person> <id>0</id> <Name>Mike</Name> <Age>23</Age> <国>Japan</国> <Company> <CompanyName>ABC com</CompanyName> </Company> </Person> </ArrayOfPerson>出力2:test2.xml
<?xml version="1.0"?> <ArrayOfPerson> <Person> <id>0</id> <Name>Mike</Name> <Age>23</Age> <国>Japan</国> <Company> <CompanyName>ABC com</CompanyName> </Company> </Person> </ArrayOfPerson>
関連記事
XML関連
C# でXMLファイルを扱うには ~ 入門編 ~https://blogs.yahoo.co.jp/dk521123/32868509.html
C# でXMLシリアライズ・デシリアライズ ~ XmlSerializerクラス ~
https://blogs.yahoo.co.jp/dk521123/22166698.html