Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit XmlSerializer können Sie mehr als einen XML-Stream mit der gleichen Gruppe von Klassen generieren. Dies ist beispielsweise dann sinnvoll, wenn zwei verschiedene XML-Webdienste die gleichen grundlegenden Informationen benötigen, die sich nur in wenigen Details unterscheiden. Stellen Sie sich beispielsweise vor, zwei XML-Webdienste, die Buchbestellungen verarbeiten, erfordern die Angabe von ISBN-Nummern. Ein Dienst verwendet das Tag <ISBN>, während der zweite das Tag <BookID> verwendet. Sie verfügen über eine Klasse mit dem Namen von Book, die ein Feld namens ISBN enthält. In der Standardeinstellung wird beim Serialisieren einer Instanz der Book-Klasse der Membername (ISBN) als Name des XML-Elements verwendet. Für den ersten XML-Webdienst entspricht dies dem erwarteten Verhalten. 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.
So erstellen Sie einen XML-Stream mit einem alternativen Elementnamen
Erstellen Sie eine Instanz der XmlElementAttribute-Klasse.
Legen Sie die ElementName-Eigenschaft des XmlElementAttribute-Objekts auf "BookID" fest.
Erstellen Sie eine Instanz der XmlAttributes-Klasse.
Fügen Sie das
XmlElementAttribute-Objekt der Sammlung hinzu, auf die über die XmlElements-Eigenschaft von XmlAttributes zugegriffen wird.Erstellen Sie eine Instanz der XmlAttributeOverrides-Klasse.
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.Erstellen Sie eine Instanz der
XmlSerializer-Klasse mitXmlAttributeOverrides.Erstellen Sie eine Instanz der
Book-Klasse, und serialisieren oder deserialisieren Sie diese Instanz.
Beispiel
Public Function 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 void 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.
<Book>
<BookID>123456789</BookID>
</Book>