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.
Mithilfe des XmlSerializer-Codes können Sie mehrere XML-Datenströme mit demselben Satz von Klassen generieren. Möglicherweise möchten Sie dies tun, da zwei verschiedene XML-Webdienste dieselben grundlegenden Informationen erfordern, wobei nur geringfügige Unterschiede bestehen. Stellen Sie sich beispielsweise zwei XML-Webdienste vor, die Bestellungen für Bücher verarbeiten, und erfordern somit beide ISBN-Nummern. Ein Dienst verwendet das Tag <ISBN> , während die zweite das Tag <BookID>verwendet. Sie haben eine Klasse namens Book , die ein Feld mit dem Namen ISBNenthält. Wenn eine Instanz der Book Klasse serialisiert wird, wird standardmäßig der Membername (ISBN) als Tagelementname verwendet. Für den ersten XML-Webdienst ist dies erwartungsgemäß. Um den XML-Datenstrom jedoch an den zweiten XML-Webdienst zu senden, müssen Sie die Serialisierung überschreiben, damit der Elementname des Tags lautet BookID.
So erstellen Sie einen XML-Datenstrom mit einem alternativen Elementnamen
Erstellen Sie eine Instanz der XmlElementAttribute Klasse.
Setzen Sie das ElementName des XmlElementAttribute auf "BookID" fest.
Erstellen Sie eine Instanz der XmlAttributes Klasse.
Fügen Sie das
XmlElementAttributeObjekt der Auflistung hinzu, auf die über die XmlElements Eigenschaft von XmlAttributes zugegriffen wird.Erstellen Sie eine Instanz der XmlAttributeOverrides Klasse.
Fügen Sie den
XmlAttributesXmlAttributeOverridesObjekttyp hinzu, der außer Kraft gesetzt werden soll, und den Namen des zu überschreibenden Elements.Erstellen Sie eine Instanz der
XmlSerializerKlasse mitXmlAttributeOverrides.Erstellen Sie eine Instanz der
Book-Klasse und serialisieren oder deserialisieren Sie sie.
Example
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-Datenstrom sieht möglicherweise wie folgt aus.
<Book>
<BookID>123456789</BookID>
</Book>