Практическое руководство. Сериализация объекта как потока XML с кодировкой SOAP

Поскольку сообщение SOAP сформировано с использованием XML, можно использовать XmlSerializer для сериализации классов и генерации сообщений с кодировкой SOAP. Полученный в результате код XML соответствует разделу 5 документа "Simple Object Access Protocol (SOAP) 1.1", разработанного консорциумом W3С. При создании XML-веб-службы, которая осуществляет связь посредством сообщений SOAP, можно настроить поток XML, применив к классам и членам классов набор специальных атрибутов SOAP. Список атрибутов см. в разделе Атрибуты, которые управляют сериализацией с кодировкой SOAP.

Чтобы сериализовать объект как поток XML с кодировкой SOAP

  1. Создайте класс с помощью средства определения схемы XML (xsd.exe).

  2. Примените один или несколько специальных атрибутов из System.Xml.Serialization. Список атрибутов см. в разделе "Атрибуты управления сериализацией с кодировкой SOAP".

  3. Создайте XmlTypeMapping путем создания нового SoapReflectionImporter и вызова метода ImportTypeMapping с типом сериализуемого класса.

    В следующем примере кода вызывается метод ImportTypeMapping класса SoapReflectionImporter для создания 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. Создайте экземпляр класса XmlSerializer, передав XmlTypeMapping конструктору XmlSerializer(XmlTypeMapping).

    Dim mySerializer As XmlSerializer = New XmlSerializer(myTypeMapping)  
    
    XmlSerializer mySerializer = new XmlSerializer(myTypeMapping);  
    
  5. Вызовите метод Serialize или Deserialize.

Пример

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

См. также