Procedura: serializzare un oggetto come flusso XML con codifica SOAP

Dato che un messaggio SOAP viene creato con XML, è possibile usare XmlSerializer per serializzare le classi e generare messaggi SOAP codificati. L'elemento XML ottenuto risulta conforme alla sezione 5 del documento "Simple Object Access Protocol (SOAP) 1.1" del World Wide Web Consortium. Quando si crea un servizio Web XML che comunica tramite messaggi SOAP, è possibile personalizzare il flusso XML applicando un set di attributi SOAP speciali a classi e membri di classi. Per un elenco di attributi, vedere Attributi per il controllo della serializzazione SOAP codificata.

Per serializzare un oggetto come flusso XML con codifica SOAP

  1. Creare la classe con lo strumento XML Schema Definition (Xsd.exe).

  2. Applicare uno o più degli attributi speciali disponibili in System.Xml.Serialization. Consultare l'elenco "Attributi per il controllo della serializzazione SOAP codificata".

  3. Creare un XmlTypeMapping creando un nuovo SoapReflectionImporter e richiamando il metodo ImportTypeMapping con il tipo della classe serializzata.

    L'esempio di codice seguente chiama il metodo ImportTypeMapping della classe SoapReflectionImporter per creare un XmlTypeMapping.

    ' Serializes a class named Group as a SOAP message.  
    Dim myTypeMapping As XmlTypeMapping =
        New SoapReflectionImporter().ImportTypeMapping(GetType(Group))  
    
    // Serializes a class named Group as a SOAP message.  
    XmlTypeMapping myTypeMapping =
        new SoapReflectionImporter().ImportTypeMapping(typeof(Group));
    
  4. Creare un'istanza della classe XmlSerializer passando XmlTypeMapping al costruttore XmlSerializer(XmlTypeMapping).

    Dim mySerializer As XmlSerializer = New XmlSerializer(myTypeMapping)  
    
    XmlSerializer mySerializer = new XmlSerializer(myTypeMapping);  
    
  5. Chiamare il metodo Serialize o Deserialize.

Esempio

' Serializes a class named Group as a SOAP message.  
Dim myTypeMapping As XmlTypeMapping =
    New SoapReflectionImporter().ImportTypeMapping(GetType(Group))
Dim mySerializer As XmlSerializer = New XmlSerializer(myTypeMapping)  
// Serializes a class named Group as a SOAP message.  
XmlTypeMapping myTypeMapping =
    new SoapReflectionImporter().ImportTypeMapping(typeof(Group));
XmlSerializer mySerializer = new XmlSerializer(myTypeMapping);  

Vedi anche