■ サンプル
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