アトリビュートを指定してXMLのシリアライズに対応したクラスを作成する。1要素に値と属性を持つ場合。(XmlTextAttribute)

XMLシリアライズは、クラスのメンバに1対1でXMLの要素や属性が対応します。ですが、以下のようなname要素に属性(japan)と値(taro kobe)を持つXMLの場合は、2つ以上のメンバをXMLの1要素として対応付けさせる必要があります。



taro kobe
manager

この場合は、name要素をクラスとして定義しfrom属性に対応したメンバと値に対応したメンバを定義します。この時、値に対応する部分に以下のアトリビュートを付けます。

・[System.Xml.Serialization.XmlTextAttribute()]

そのため、XmlTextAttributeはクラスのメンバーに対して1つだけしか付けることができません。


[System.SerializableAttribute]
[System.Xml.Serialization.XmlRootAttribute("member")]
public class member
{

[System.Xml.Serialization.XmlElementAttribute("name")]
public nameClass name = null;

[System.Xml.Serialization.XmlElementAttribute("job")]
public String job = String.Empty;

[System.SerializableAttribute]
public class nameClass
{
[System.Xml.Serialization.XmlAttributeAttribute("from")]
public String from = String.Empty;

[System.Xml.Serialization.XmlTextAttribute]
public String value = String.Empty;
}

}

XmlTextAttributeに文字列以外を指定する場合は、DataType名前付き引数を渡すことで対応させることが出来ます。

・[System.Xml.Serialization.XmlTextAttribute(DataType="integer")]