Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med hjälp av XmlSerializerkan du generera mer än en XML-dataström med samma uppsättning klasser. Du kanske vill göra detta eftersom två olika XML-webbtjänster kräver samma grundläggande information, med bara små skillnader. Tänk dig till exempel två XML-webbtjänster som bearbetar beställningar för böcker och därmed båda kräver ISBN-nummer. En tjänst använder taggen <ISBN> medan den andra använder taggen <BookID>. Du har en klass med namnet Book som innehåller ett fält med namnet ISBN. När en instans av Book klassen serialiseras använder den som standard medlemsnamnet (ISBN) som taggelementnamn. För den första XML-webbtjänsten är detta som förväntat. Men om du vill skicka XML-dataströmmen till den andra XML-webbtjänsten måste du åsidosätta serialiseringen så att taggens elementnamn är BookID.
Så här skapar du en XML-dataström med ett alternativt elementnamn
Skapa en instans av XmlElementAttribute klassen.
Ange ElementName för XmlElementAttribute till "BookID".
Skapa en instans av XmlAttributes klassen.
Lägg till objektet i
XmlElementAttributesamlingen som nås via XmlElements egenskapen XmlAttributes .Skapa en instans av XmlAttributeOverrides klassen.
Lägg till
XmlAttributesi relation till XmlAttributeOverrides, genom att skicka typen av objektet som ska åsidosättas och namnet på medlemmen som åsidosätts.Skapa en instans av
XmlSerializerklassen medXmlAttributeOverrides.Skapa en instans av
Bookklassen och serialisera eller deserialisera den.
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);
}
XML-strömmen kan likna följande.
<Book>
<BookID>123456789</BookID>
</Book>