XmlElementAttribute は、XmlSerializer がオブジェクトをシリアル化または逆シリアル化する方法を制御する一連の属性の 1 つです。類似する属性の完全な一覧については、「XML シリアル化を制御する属性」を参照してください。
通常、XML ドキュメントには XML 要素が含まれており、各 XML 要素は、開始タグ、終了タグ、タグ間のデータという 3 つの部分で構成されています。XML タグは入れ子にできます。つまり、タグ間のデータが XML 要素になっている場合もあります。これにより、ある要素で別の要素を囲むことができるため、ドキュメントにデータを階層的に格納できます。XML 要素には、属性を含むこともできます。
要素名や名前空間など、XML 要素の特性を制御するには、XmlElementAttribute をパブリック フィールドまたは読み取り/書き込み可能なパブリック プロパティに適用します。
XmlElementAttribute は、オブジェクトの配列を返すフィールドには何回でも適用できます。その理由は、その配列に挿入できる各種の型を、Type プロパティを使用して指定できるようにするためです。たとえば、次の C# コードの配列には、文字列と整数の両方を格納できます。
public class Things{
[XmlElement(DataType = typeof(string)),
XmlElement(DataType = typeof(int))]
public object[] StringsAndInts;
} 結果として、次のような XML が生成されます。
<Things>
<string>Hello</string>
<int>999</int>
<string>World</string>
</Things> ElementName プロパティの値を指定せずに XmlElementAttribute を何回も適用した場合、各要素には、配列に挿入できるオブジェクトの型の名前が付けられます。
配列を返すフィールドまたはプロパティに XmlElementAttribute を適用すると、その配列内の項目は XML 要素のシーケンスとしてエンコードされます。
これに対し、このようなフィールドまたはプロパティに XmlElementAttribute を適用しないと、それらが返す配列内の項目は単なる要素のシーケンスとしてエンコードされ、それぞれフィールドまたはプロパティの名前が付いた要素として入れ子になります。配列のシリアル化方法を制御する場合は、XmlArrayAttribute 属性と XmlArrayItemAttribute 属性を使用します。
Type プロパティを設定して、元のフィールドまたはプロパティ (XmlElementAttribute を適用したフィールドまたはプロパティ) の型から派生する型を指定できます。
フィールドまたはプロパティが ArrayList を返す場合は、そのメンバに XmlElementAttribute の複数のインスタンスを適用できます。各インスタンスの Type プロパティに、配列に挿入できるオブジェクトの型を設定します。
属性の使用方法については、「属性を使用したメタデータの拡張」を参照してください。
メモ |
|---|
| コードでは、XmlElementAttribute の代わりに XmlElement という短い語を使用できます。 |