如何:使用 XML 序列化自定义 SOAP 消息

System.Web.Serialization 命名空间提供了大量用于控制 XML 序列化且适用于 Web 服务方法的参数和返回值的属性。 本主题演示如何使用 XmlElementAttribute 属性。

指定表示某个参数的 XML 元素的名称

  • 向该参数应用 XmlElement 属性,此属性可为元素指定所需的名称,如果该参数的格式设置为 Literal,它还可以指定命名空间的名称。 如果该参数的格式设置为 Encoded,则应向该参数应用 SoapElement 属性。

    下面的代码示例要求表示参数的元素名称为 MyAddressElementMyZipElementReturnValueElement。 此外,它还要求表示返回值的元素名称为 ReturnValueElement。 在该示例中,Web 服务方法的格式为 Document,这是 ASP.NET 的默认设置。

    <%@ WebService Language="C#" Class="SoapDocumentServiceSample" %>
     using System.Web.Services;
     using System.Web.Services.Protocols;
     using System.Xml.Serialization;
    
    [WebService(Namespace="https://www.contoso.com")] 
    public class SoapDocumentServiceSample  
    {
      [ WebMethod ]
      [ return: XmlElement("ReturnValueElement",IsNullable=false)]
      public Address ValidateAddress(
        [XmlElement("MyAddressElement")] Address MyAddress,
        [XmlElement("MyZipElement")] bool useZipPlus4) 
      {
        useZipPlus4 = true;    
        return new Address();
      }
    }
    
    <%@ WebService Language="VB" Class="SoapDocumentServiceSample" %>
     Imports System.Web.Services
     Imports System.Web.Services.Protocols
     Imports System.Xml.Serialization
    
    <WebService(Namespace := "https://www.contoso.com")> _
    Public Class SoapDocumentServiceSample
      < WebMethod > _
      Public Function ValidateAddress( _
           <XmlElement("MyAddressElement")> MyAddress As Address, _
           <XmlElement("MyZipElement")> useZipPlus4 As Boolean)  
           As <XmlElement("ReturnValueElement",IsNullable :=false)> _
           Address 
            useZipPlus4 = True 
         Return new Address()
      End Function
    End Class
    

    Web 服务应收到以下 SOAP 请求。 请注意元素名称与 XmlElement 属性中指定的哪些内容匹配,它们与参数名称之间存在哪些差别。

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <ValidateAddress xmlns="http://tempuri.org/">
          <MyAddressElement>
            <Street>string</Street>
            <City>string</City>
            <Zip>string</Zip>
          </MyAddressElement>
          <MyZipElement>boolean</MyZipElement>
        </ValidateAddress>
      </soap:Body>
    </soap:Envelope>
    

请参见

参考

System.Xml.Serialization Namespace
SoapDocumentMethodAttribute
SoapRpcMethodAttribute
SoapDocumentServiceAttribute
SoapRpcServiceAttribute

概念

使用 SOAP 扩展修改 SOAP 消息
生成 XML Web services 客户端

其他资源

自定义 SOAP 消息的格式设置
Introducing XML Serialization
使用 ASP.NET 的 XML Web services

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。