Share via


Procedure: Geef een alternatieve elementnaam op voor een XML-stream

Met behulp van de XmlSerializer, kunt u meer dan één XML-stream genereren met dezelfde set klassen. U kunt dit doen omdat twee verschillende XML-webservices dezelfde basisinformatie vereisen, met slechts kleine verschillen. Stel dat twee XML-webservices orders voor boeken verwerken en dus beide ISBN-nummers vereisen. Eén service gebruikt de tag <ISBN> terwijl de tweede de tag <BookID> gebruikt. U hebt een klasse met de naam Book een veld met de naam ISBN. Wanneer een exemplaar van de Book klasse wordt geserialiseerd, wordt standaard de lidnaam (ISBN) gebruikt als de naam van het tag-element. Voor de eerste XML-webservice is dit zoals verwacht. Maar als u de XML-stroom naar de tweede XML-webservice wilt verzenden, moet u de serialisatie overschrijven zodat de elementnaam van de tag is BookID.

Een XML-stream maken met een alternatieve elementnaam

  1. Maak een exemplaar van de XmlElementAttribute-klasse.

  2. Stel de van de ElementNameXmlElementAttribute in op 'BookID'.

  3. Maak een exemplaar van de XmlAttributes-klasse.

  4. Voeg het XmlElementAttribute object toe aan de verzameling die wordt geopend via de XmlElements eigenschap van XmlAttributes .

  5. Maak een exemplaar van de XmlAttributeOverrides-klasse.

  6. Voeg het XmlAttributes toe aan het XmlAttributeOverridesobject, waarbij het type van het object wordt doorgegeven om te overschrijven en de naam van het lid dat wordt overschreven.

  7. Maak een exemplaar van de XmlSerializer klasse met XmlAttributeOverrides.

  8. Maak een exemplaar van de Book klasse en serialiseer of deserialiseer deze.

Opmerking

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

De XML-stroom kan er ongeveer als volgt uitzien.

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

Zie ook