方法 : XML ストリームの代替要素名を指定する
コード例
XmlSerializer を使用して、クラスのセットが同じである XML ストリームを複数生成できます。このような作業が必要になるのは、2 つの異なる XML Web サービスが、若干の違いのある同じ基本情報を要求するような場合です。たとえば、書籍の注文を処理する 2 つの XML Web サービスがあり、どちらにも ISBN 番号が必要であるとします。一方のサービスは <ISBN> タグを使用しますが、もう一方は <BookID> タグを使用します。ISBN
という名前のフィールドを含む、Book
という名前のクラスがあります。Book
クラスのインスタンスがシリアル化されると、既定では、メンバー名 (ISBN) がタグ要素名として使用されます。最初の XML Web サービスの場合、この既定どおりで問題ありません。一方、2 つ目の XML Web サービスに XML ストリームを送信するには、タグの要素名が BookID
になるようにシリアル化をオーバーライドする必要があります。
代替要素名で XML ストリームを作成するには
XmlElementAttribute クラスのインスタンスを作成します。
XmlElementAttribute の ElementName を "BookID" に設定します。
XmlAttributes クラスのインスタンスを作成します。
XmlElementAttribute オブジェクトを XmlAttributes の XmlElements プロパティによってアクセスされるコレクションに追加します。
XmlAttributeOverrides クラスのインスタンスを作成します。
XmlAttributes を XmlAttributeOverrides に追加し、オーバーライドするオブジェクトの型とオーバーライドされるメンバーの名前を渡します。
XmlAttributeOverrides を使用して、XmlSerializer クラスのインスタンスを作成します。
Book
クラスのインスタンスを作成し、シリアル化または逆シリアル化します。
例
Public Class SerializeOverride()
' Creates an XmlElementAttribute with the alternate name.
Dim myElementAttribute As XmlElementAttribute = _
New XmlElementAttribute()
myElementAttribute.ElementName = "BookID"
Dim myAttributes As XmlAttributes = New XmlAttributes()
myAttributes.XmlElements.Add(myElementAttribute)
Dim myOverrides As XmlAttributeOverrides = New XmlAttributeOverrides()
myOverrides.Add(typeof(Book), "ISBN", myAttributes)
Dim mySerializer As XmlSerializer = _
New XmlSerializer(GetType(Book), myOverrides)
Dim b As Book = New Book()
b.ISBN = "123456789"
' Creates a StreamWriter to write the XML stream to.
Dim writer As StreamWriter = New StreamWriter("Book.xml")
mySerializer.Serialize(writer, b);
End Class
public class SerializeOverride()
{
// Creates an XmlElementAttribute with the alternate name.
XmlElementAttribute myElementAttribute = new XmlElementAttribute();
myElementAttribute.ElementName = "BookID";
XmlAttributes myAttributes = new XmlAttributes();
myAttributes.XmlElements.Add(myElementAttribute);
XmlAttributeOverrides myOverrides = new XmlAttributeOverrides();
myOverrides.Add(typeof(Book), "ISBN", myAttributes);
XmlSerializer mySerializer =
new XmlSerializer(typeof(Book), myOverrides)
Book b = new Book();
b.ISBN = "123456789"
// Creates a StreamWriter to write the XML stream to.
StreamWriter writer = new StreamWriter("Book.xml");
mySerializer.Serialize(writer, b);
}
XML ストリームは、次のようになります。
<Book>
<BookID>123456789</BookID>
</Book>
参照
処理手順
方法 : オブジェクトをシリアル化する
方法 : オブジェクトを逆シリアル化する
方法 : オブジェクトを逆シリアル化する
リファレンス
XmlSerializer
XmlElementAttribute
XmlAttributes
XmlAttributeOverrides
その他のリソース
ビルド日:2010-03-10