Vorgehensweise: Angeben eines alternativen Elementnamens für einen XML-StreamHow to: Specify an Alternate Element Name for an XML Stream

Mit XmlSerializer können Sie mehr als einen XML-Stream mit der gleichen Gruppe von Klassen generieren.Using the XmlSerializer, you can generate more than one XML stream with the same set of classes. Dies ist beispielsweise dann sinnvoll, wenn zwei verschiedene XML-Webdienste die gleichen grundlegenden Informationen benötigen, die sich nur in wenigen Details unterscheiden.You might want to do this because two different XML Web services require the same basic information, with only slight differences. Stellen Sie sich beispielsweise vor, zwei XML-Webdienste, die Buchbestellungen verarbeiten, erfordern die Angabe von ISBN-Nummern.For example, imagine two XML Web services that process orders for books, and thus both require ISBN numbers. Ein Dienst verwendet das Tag <ISBN>, während der zweite das Tag <BookID> verwendet.One service uses the tag <ISBN> while the second uses the tag <BookID>. Sie verfügen über eine Klasse mit dem Namen von Book, die ein Feld namens ISBN enthält.You have a class named Book that contains a field named ISBN. In der Standardeinstellung wird beim Serialisieren einer Instanz der Book-Klasse der Membername (ISBN) als Name des XML-Elements verwendet.When an instance of the Book class is serialized, it will, by default, use the member name (ISBN) as the tag element name. Für den ersten XML-Webdienst entspricht dies dem erwarteten Verhalten.For the first XML Web service, this is as expected. Wenn der XML-Stream jedoch an den zweiten XML-Webdienst gesendet werden soll, muss die Serialisierung überschrieben werden, damit der Elementname des Tags BookID lautet.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.

So erstellen Sie einen XML-Stream mit einem alternativen ElementnamenTo create an XML stream with an alternate element name

  1. Erstellen Sie eine Instanz der XmlElementAttribute-Klasse.Create an instance of the XmlElementAttribute class.

  2. Legen Sie die ElementName-Eigenschaft des XmlElementAttribute-Objekts auf "BookID" fest.Set the ElementName of the XmlElementAttribute to "BookID".

  3. Erstellen Sie eine Instanz der XmlAttributes-Klasse.Create an instance of the XmlAttributes class.

  4. Fügen Sie das XmlElementAttribute-Objekt der Sammlung hinzu, auf die über die XmlElements-Eigenschaft von XmlAttributes zugegriffen wird.Add the XmlElementAttribute object to the collection accessed through the XmlElements property of XmlAttributes .

  5. Erstellen Sie eine Instanz der XmlAttributeOverrides-Klasse.Create an instance of the XmlAttributeOverrides class.

  6. Fügen Sie das XmlAttributes-Objekt dem XmlAttributeOverrides-Objekt hinzu, und geben Sie dabei sowohl den Typ des zu überschreibenden Objekts als auch den Namen des Members an, das überschrieben wird.Add the XmlAttributes to the XmlAttributeOverrides, passing the type of the object to override and the name of the member being overridden.

  7. Erstellen Sie eine Instanz der XmlSerializer-Klasse mit XmlAttributeOverrides.Create an instance of the XmlSerializer class with XmlAttributeOverrides.

  8. Erstellen Sie eine Instanz der Book-Klasse, und serialisieren oder deserialisieren Sie diese Instanz.Create an instance of the Book class, and serialize or deserialize it.

BeispielExample

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);  
}  

Der XML-Stream könnte wie folgt aussehen.The XML stream might resemble the following.

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

Siehe auchSee also