Cómo: Personalizar mensajes SOAP con serialización XML
Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.
El espacio de nombres System.Web.Serialization proporciona numerosos atributos para controlar la serialización XML que se puede aplicar a los parámetros y a los valores devueltos de métodos de servicios Web. En este tema se muestra cómo usar el atributo XmlElementAttribute.
Para especificar el nombre del elemento XML que representa un parámetro
Aplique un atributo XmlElement al parámetro, que especifica el nombre deseado para el elemento y, opcionalmente, un espacio de nombres si el formato de parámetro está establecido en Literal. Si el formato de parámetro está establecido en Encoded, aplique un atributo SoapElement al parámetro.
El ejemplo de código siguiente espera los nombres de elementos que representan los parámetros sean
MyAddressElement
,MyZipElement
yReturnValueElement
. También que espera el nombre de elemento que representa el valor devuelto seaReturnValueElement
. El método de servicio Web al que se da formato en el ejemplo es Document, que es el valor predeterminado de 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
El servicio Web espera la siguiente solicitud SOAP. Observe que los nombres de elementos coinciden con lo especificado en el atributo XmlElement, lo contrario a los nombres de parámetros.
<?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>
Vea también
Referencia
System.Xml.Serialization Namespace
SoapDocumentMethodAttribute
SoapRpcMethodAttribute
SoapDocumentServiceAttribute
SoapRpcServiceAttribute
Conceptos
Modificación de mensajes SOAP con extensiones SOAP
Generar clientes de servicios web XML
Otros recursos
Personalizar el formato de mensajes SOAP
Introducing XML Serialization
Servicios web XML con ASP.NET