次の方法で共有


方法 : XML ストリームの代替要素名を指定する

コード例

XmlSerializer を使用すると、一連の同じクラスを使用して、複数の XML ストリームを生成できます。このような処理が必要になるのは、2 つの異なる XML Web サービスが、細部が少し異なるだけでほぼ同じ基本情報を要求するような場合です。たとえば、書籍の注文を処理する 2 つの XML Web サービスがあり、その両方の処理で国際標準図書番号 (ISBN : International Standard Book Number) が必要だとします。一方のサービスはタグ <ISBN> を使用し、もう一方のサービスはタグ <BookID> を使用します。ISBN という名前のフィールドを含む Book という名前のクラスを作成します。Book クラスのインスタンスをシリアル化すると、既定では、メンバ名 (ISBN) がタグの要素名として使用されます。最初の XML Web サービスの場合は、この既定の動作で問題ありません。しかし、この XML ストリームを 2 番目の XML Web サービスに送信するには、タグの要素名が BookID となるようにシリアル化をオーバーライドする必要があります。

代替要素名を持つ XML ストリームを作成するには

  1. XmlElementAttribute クラスのインスタンスを作成します。

  2. XmlElementAttributeElementName を "BookID" に設定します。

  3. XmlAttributes クラスのインスタンスを作成します。

  4. XmlAttributesXmlElements プロパティを通してアクセスされるコレクションに、XmlElementAttribute オブジェクトを追加します。

  5. XmlAttributeOverrides クラスのインスタンスを作成します。

  6. XmlAttributes をこの XmlAttributeOverrides に追加し、オーバーライドする対象のオブジェクトの型と、オーバーライドされるメンバの名前を渡します。

  7. XmlAttributeOverrides を使用して、XmlSerializer クラスのインスタンスを作成します。

  8. 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

その他の技術情報

XML シリアル化および SOAP シリアル化