Vorgehensweise: Serialisieren eines Objekts als einen durch SOAP codierten XML-Stream

Da eine SOAP-Nachricht mithilfe von XML erstellt wird, kann die XmlSerializer-Klasse zum Serialisieren von Klassen und zum Generieren von codierten SOAP-Nachrichten verwendet werden. Das resultierende XML entspricht Abschnitt 5 des Dokuments „Simple Object Access Protocol (SOAP) 1.1“ des World Wide Web Consortium. Wenn Sie einen XML-Webdienst erstellen, der durch SOAP-Meldungen kommuniziert, können Sie den XML-Datenstrom anpassen, indem Sie eine Gruppe spezieller SOAP-Attribute auf Klassen und Member von Klassen anwenden. Eine Liste mit Attributen finden Sie unter Attributes That Control Encoded SOAP Serialization (Attribute zur Steuerung der Serialisierung von codiertem SOAP).

So serialisieren Sie ein Objekt als einen durch SOAP codierten XML-Stream

  1. Erstellen Sie die Klasse mit dem XML Schema Definition-Tool (Xsd.exe).

  2. Wenden Sie eines oder mehrere der speziellen Attribute aus System.Xml.Serialization an. Schlagen Sie hierzu in der Liste unter "Attribute für die Steuerung der Serialisierung von codiertem SOAP" nach.

  3. Erstellen Sie ein XmlTypeMapping-Objekt, indem Sie eine neue SoapReflectionImporter-Klasse erstellen und die ImportTypeMapping-Methode mit dem Typ der serialisierten Klasse aufrufen.

    Im folgenden Codebeispiel wird die ImportTypeMapping-Methode der Klasse SoapReflectionImporter aufgerufen, um ein XmlTypeMapping-Objekt zu erstellen.

    ' 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. Erstellen Sie eine Instanz der XmlSerializer-Klasse, indem Sie das XmlTypeMapping-Objekt an den XmlSerializer(XmlTypeMapping)-Konstruktor übergeben.

    Dim mySerializer As XmlSerializer = New XmlSerializer(myTypeMapping)  
    
    XmlSerializer mySerializer = new XmlSerializer(myTypeMapping);  
    
  5. Rufen Sie die Serialize-Methode oder Deserialize-Methode auf.

Beispiel

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

Siehe auch