如何:将对象序列化为 SOAP 编码的 XML 流

代码示例

由于 SOAP 消息是使用 XML 生成的,因此 XmlSerializer 可用于序列化类和生成编码的 SOAP 消息。生成的 XML 符合标题为“Simple Object Access Protocol (SOAP) 1.1”的万维网联合会 (www.w3.org) 文档的第 5 节。当您在创建通过 SOAP 消息进行通信的 XML Web 服务时,可以通过将一组特殊的 SOAP 属性应用于类和类的成员来自定义 XML 流。有关属性的列表,请参见控制编码的 SOAP 序列化的属性

将对象序列化为 SOAP 编码的 XML 流

  1. 使用 XML 架构定义工具 (Xsd.exe) 创建类。

  2. 应用在 System.Xml.Serialization 中找到的一个或多个特殊属性。请参见“控制编码的 SOAP 序列化的属性”中的列表。

  3. 通过创建一个新的 SoapReflectionImporter 并用序列化类的类型调用 ImportTypeMapping 方法,创建 XmlTypeMapping。

    以下代码示例调用 SoapReflectionImporter 类的 ImportTypeMapping 方法,以创建 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. 通过将 XmlTypeMapping 传递给 XmlSerializer 构造函数,创建 XmlSerializer 类的实例。

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

请参见

任务

如何:将对象序列化
如何:将对象反序列化
如何:重写已编码的 SOAP XML 序列化

概念

控制编码的 SOAP 序列化的属性
XML Web 服务的 XML 序列化

其他资源

XML 和 SOAP 序列化