Condividi tramite


Procedura: Specificare un nome di elemento alternativo per un flusso XML

Esempio di codice

Tramite l'utilizzo di XmlSerializer, è possibile generare più di un flusso XML con lo stesso insieme di classi. È consigliabile eseguire questa operazione poiché due diversi servizi Web XML richiedono le stesse informazioni di base, con solo piccole differenze. Si immagini ad esempio due servizi Web XML che elaborano ordini per libri e che pertanto richiedono i numeri ISBN. Un servizio utilizza il tag <ISBN> mentre il secondo utilizza il tag <BookID>. Si dispone di una classe denominata Book che contiene un campo denominato ISBN. Quando viene serializzata un'istanza della classe Book, per impostazione predefinita verrà utilizzato il nome del membro (ISBN) come nome dell'elemento del tag. Per il primo servizio Web XML, tale comportamento è quello previsto. Per inviare invece il flusso XML al secondo servizio Web XML, è necessario eseguire l'override della serializzazione in modo che il nome dell'elemento del tag sia BookID.

Per creare un flusso XML con un nome dell'elemento alternativo

  1. Creare un'istanza della classe XmlElementAttribute.

  2. Impostare ElementName di XmlElementAttribute su "BookID".

  3. Creare un'istanza della classe XmlAttributes.

  4. Aggiungere l'oggetto XmlElementAttribute all'insieme a cui si accede tramite la proprietà XmlElements di XmlAttributes.

  5. Creare un'istanza della classe XmlAttributeOverrides.

  6. Aggiungere XmlAttributes a XmlAttributeOverrides e passare il tipo dell'oggetto da sottoporre a override e il nome del membro da sottoporre a override.

  7. Creare un'istanza della classe XmlSerializer con XmlAttributeOverrides.

  8. Creare un'istanza della classe Book e serializzarla o deserializzarla.

Esempio

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

Il flusso XML potrebbe assomigliare agli elementi seguenti.

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

Vedere anche

Attività

Procedura: Serializzare un oggetto
Procedura: Deserializzare un oggetto
Procedura: Deserializzare un oggetto

Riferimenti

XmlSerializer
XmlElementAttribute
XmlAttributes
XmlAttributeOverrides

Altre risorse

Serializzazione SOAP e XML

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.