Практическое руководство. Сериализация объекта как потока XML с кодировкой SOAP
Поскольку сообщение SOAP сформировано с использованием XML, можно использовать XmlSerializer для сериализации классов и генерации сообщений с кодировкой SOAP. Полученный в результате код XML соответствует разделу 5 документа "Simple Object Access Protocol (SOAP) 1.1", разработанного консорциумом W3С. При создании XML-веб-службы, которая осуществляет связь посредством сообщений SOAP, можно настроить поток XML, применив к классам и членам классов набор специальных атрибутов SOAP. Список атрибутов см. в разделе Атрибуты, которые управляют сериализацией с кодировкой SOAP.
Чтобы сериализовать объект как поток XML с кодировкой SOAP
Создайте класс с помощью средства определения схемы XML (xsd.exe).
Примените один или несколько специальных атрибутов из
System.Xml.Serialization
. Список атрибутов см. в разделе "Атрибуты управления сериализацией с кодировкой SOAP".Создайте
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));
Создайте экземпляр класса
XmlSerializer
, передавXmlTypeMapping
конструктору XmlSerializer(XmlTypeMapping).Dim mySerializer As XmlSerializer = New XmlSerializer(myTypeMapping)
XmlSerializer mySerializer = new XmlSerializer(myTypeMapping);
Вызовите метод
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);