方法: XML ストリームの代替要素名を指定するHow to: Specify an Alternate Element Name for an XML Stream

XmlSerializer を使用して、クラスのセットが同じである XML ストリームを複数生成できます。Using the XmlSerializer, you can generate more than one XML stream with the same set of classes. このような作業が必要になるのは、2 つの異なる XML Web サービスが、若干の違いのある同じ基本情報を要求するような場合です。You might want to do this because two different XML Web services require the same basic information, with only slight differences. たとえば、書籍の注文を処理する 2 つの XML Web サービスがあり、どちらにも ISBN 番号が必要であるとします。For example, imagine two XML Web services that process orders for books, and thus both require ISBN numbers. 一方のサービスは <ISBN> タグを使用しますが、もう一方は <BookID> タグを使用します。One service uses the tag <ISBN> while the second uses the tag <BookID>. Book という名前のフィールドを含む、ISBN という名前のクラスがあります。You have a class named Book that contains a field named ISBN. Book クラスのインスタンスがシリアル化されると、既定では、メンバー名 (ISBN) がタグ要素名として使用されます。When an instance of the Book class is serialized, it will, by default, use the member name (ISBN) as the tag element name. 最初の XML Web サービスの場合、この既定どおりで問題ありません。For the first XML Web service, this is as expected. 一方、2 つ目の XML Web サービスに XML ストリームを送信するには、タグの要素名が BookID になるようにシリアル化をオーバーライドする必要があります。But to send the XML stream to the second XML Web service, you must override the serialization so that the tag's element name is BookID.

代替要素名で XML ストリームを作成するにはTo create an XML stream with an alternate element name

  1. XmlElementAttribute クラスのインスタンスを作成します。Create an instance of the XmlElementAttribute class.

  2. ElementNameXmlElementAttribute を "BookID" に設定します。Set the ElementName of the XmlElementAttribute to "BookID".

  3. XmlAttributes クラスのインスタンスを作成します。Create an instance of the XmlAttributes class.

  4. XmlElementAttribute オブジェクトを XmlElementsXmlAttributes プロパティによってアクセスされるコレクションに追加します。Add the XmlElementAttribute object to the collection accessed through the XmlElements property of XmlAttributes .

  5. XmlAttributeOverrides クラスのインスタンスを作成します。Create an instance of the XmlAttributeOverrides class.

  6. XmlAttributesXmlAttributeOverrides に追加し、オーバーライドするオブジェクトの型とオーバーライドされるメンバーの名前を渡します。Add the XmlAttributes to the XmlAttributeOverrides, passing the type of the object to override and the name of the member being overridden.

  7. XmlSerializer を使用して、XmlAttributeOverrides クラスのインスタンスを作成します。Create an instance of the XmlSerializer class with XmlAttributeOverrides.

  8. Book クラスのインスタンスを作成し、シリアル化または逆シリアル化します。Create an instance of the Book class, and serialize or deserialize it.

Example

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 ストリームは、次のようになります。The XML stream might resemble the following.

<Book>  
    <BookID>123456789</BookID>  
</Book>  

関連項目See also