Como serializar um objeto como um fluxo XML codificado para SOAP

Como a mensagem de SOAP é criada usando XML, a classe XmlSerializer pode ser usado para serializar classes e gerar mensagens SOAP codificadas. O XML resultante está em conformidade com a seção 5 do documento "Protocolo SOAP 1.1" do World Wide Web Consortium. Quando você está criando um serviço Web XML que se comunica por meio de mensagens SOAP, pode personalizar o fluxo XML aplicando um conjunto de atributos SOAP especiais para classes e membros de classes. Para obter mais informações, consulte Atributos que controlam a serialização SOAP codificada.

Para serializar um objeto como um fluxo XML codificado para SOAP

  1. Criar a classe usando a Ferramenta de Definição de Esquema XML (Xsd.exe).

  2. Aplique um ou mais dos atributos especiais localizados em System.Xml.Serialization. Consulte a lista em "Atributos que controlam a serialização SOAP codificada".

  3. Crie um XmlTypeMapping criando um novo SoapReflectionImporter e invocando o método ImportTypeMapping com o tipo da classe serializada.

    O exemplo de código a seguir chama o método ImportTypeMapping da classe SoapReflectionImporter para criar um 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. Cria uma instância da classe XmlSerializer passando o XmlTypeMapping para o construtor XmlSerializer(XmlTypeMapping).

    Dim mySerializer As XmlSerializer = New XmlSerializer(myTypeMapping)  
    
    XmlSerializer mySerializer = new XmlSerializer(myTypeMapping);  
    
  5. Chame o método Serialize or Deserialize.

Exemplo

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

Confira também