配列のシリアライズで、配列そのものにタグを与えたくない
System.Xml.Serialization.XmlSerializer を使用してプロパティに配列を持つオブジェクトを普通にXMLシリアライズする
と、配列にタグがついて、さらに配列の要素一つ一つにもタグがつく.
たとえば,
class Person {
int id;
String name;// ... setter, getterは省略 ...
}class Company {
Person[] persons;
String companyName;public String CompanyName {
get { return this.companyName; }
set { this.companyName = value; }
}
public Person[] Persons {
get { return this.persons; }
set { this.persons = value; }
}
}
をシリアライズすると
1001
Taro
1002
Jiro
・・・
となり,Personsタグが余計な感じとなる.
この場合,CompanyクラスのPersonsプロパティに [XmlElement(Type = typeof(クラス名))]という定義を付けると,Personsタグを省略し,Personタグの繰り返しだけにすることができる.
例:
[XmlElement(Type = typeof(Person))]
public Person[] Person {
get { return this.persons }
set { this.persons = value }
}
1001
Taro
1002
Jiro
・・・