<p><pclass"\\&quot;a14\\&quot;">众所周知,SOAP协议目前是基于HTTP之上的传输信息的一种标准,它以XML为基础,并将消息封装在其中之一。对于使用ASP.NET创建的XMLWebservices和它们的使用SOAP与XMLWebservices方法进行通讯的客户端来说,一个复杂的机制可以用来控制发送到服务器和从服务器接收的SOAP消息的格式。SOAP规定发送到XMLWebservices和从XMLWebservices发送回的SOAP消息的内容必须为XML格式。但是,它并没有严格地规定XML的格式设置。为了提供一个使用接收不同的格式设置的XMLWebservices的机制,ASP.NET提供了一个基于属性的机制来控制SOAP消息中XML的格式。另外,还提供了指定特定元素和通过网络发送的SOAP属性名的基于属性的机制,用来在更精细的细节级别上控制SOAP。</p><br/> <pclass"\\&quot;a14\\&quot;">使用ASP.NET创建的XMLWebservices和它们的客户端之间的通讯在很大程度上是由两个行业标准规范的:SOAP和Web服务描述语言(WSDL)。SOAP为出现在Body元素下的数据定义格式设置方案,并为如何在Body元素中对参数进行格式设置定义格式设置方案。WSDL用于描述XMLWebservices所需的SOAP消息,WSDL允许XMLWebservices声明它们接受带有编码参数的RPC消息,但它还定义了两个其他术语:Literal和Document。Literal(与Encoded类似)是指参数的格式设置方式。Document(与RPC类似)是指全部Body元素的格式设置方式。</p><br/> <pclass"\\&quot;a14\\&quot;">下表概述了使用ASP.NET创建的XMLWebservices支持的格式设置样式以及完成每个特定组合的属性。带有Service后缀的属性可以应用于实现XMLWebservices的类以设置该类中XMLWebservices方法的默认格式设置样式。带有Method后缀的属性只能应用于XMLWebservices方法或调用XMLWebservices方法的代理类中的方法。每个组合的详细信息在下表中都有所介绍。</p><br/> <tablebder"\\&quot;1\\&quot;"cellspacing"\\&quot;1\\&quot;"><br/> <tbody><br/> <tr><br/> <tdvalign"\\&quot;top\\&quot;"><br/> <pclass"\\&quot;MsoNmal\\&quot;"><strong><spanlang"\\&quot;EN-US\\&quot;">&nbsp;&nbsp;&nbsp;</span><spanlang"\\&quot;EN-US\\&quot;"></span></strong></p><br/> <pclass"\\&quot;MsoNmal\\&quot;"><strong><spannew"">SOAP</span></strong></p><br/> <pclass"\\&quot;MsoNmal\\&quot;"><spanlang"\\&quot;EN-US\\&quot;"><o:p></o:p></span></p><br/> <pclass"\\&quot;MsoNmal\\&quot;"><spannew"">Document</span><spannew"">SOAP</span></p><br/> <pclass"\\&quot;MsoNmal\\&quot;"><spannew"">RPC</span><spannew"">SOAP</span><spannew"">SOAP</span><spannew"">7</span></p><br/> <pclass"\\&quot;MsoNmal\\&quot;"><spanlang"\\&quot;EN-US\\&quot;">Literal&mdash;</span><spannew"">XSD</span></p><br/> <pclass"\\&quot;MsoNmal\\&quot;"><strong><spanlang"\\&quot;EN-US\\&quot;">SoapDocumentMethod</span></strong><spannew"">SoapDocumentService</span></p><br/> <p><spanlang"\\&quot;EN-US\\&quot;">Use<strong>Literal</strong><o:p></o:p></span></p><br/> <p><spanlang"\\&quot;EN-US\\&quot;">这是默认值。<o:p></o:p></span></p><br/> </td><br/> <tdvalign"\\&quot;top\\&quot;"><br/> <pclass"\\&quot;MsoNmal\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;MsoNmal\\&quot;"><strong><spanlang"\\&quot;EN-US\\&quot;">Encoded-SOAP</span><spannew"">5</span></strong><spanlang"\\&quot;EN-US\\&quot;"><o:p></o:p></span></p><br/> <pclass"\\&quot;MsoNmal\\&quot;"><strong><spanlang"\\&quot;EN-US\\&quot;">SoapDocumentMethod</span></strong><spannew"">SoapDocumentService</span></p><br/> <p><spanlang"\\&quot;EN-US\\&quot;">Use<strong>Encoded</strong><o:p></o:p></span></p><br/> </td><br/> <tdvalign"\\&quot;top\\&quot;"><br/> <pclass"\\&quot;MsoNmal\\&quot;"><strong><spanlang"\\&quot;EN-US\\&quot;">SoapRpcMethod</span></strong><spanlang"\\&quot;EN-US\\&quot;"></span><spannew"">SoapRpcService</span><spanlang"\\&quot;EN-US\\&quot;">设计XMLWebservices时首先要作出的决定之一就是您要如何对SOAP请求中的XML进行编码。明确地说,您是要XML文档严格遵循XSD架构还是要遵循SOAP规范第5节和第7节中概述的格式设置规则?SOAP规范第5节和第7节中的格式设置规则考虑到了变体。这样,使用SOAP编码规则的SOAP请求的接收方必须处理所有可能的变体。通过定义XMLWebservices方法的XSD架构,可以具体地定义SOAP请求中需要发送的确切内容。使用ASP.NET创建的XMLWebservices默认为使用基于架构传递的文档。</span></p><br/> <pclass"\\&quot;a14\\&quot;">因为XMLWebservices方法的参数可以组成SOAP请求或响应中传递的大部分数据,所以参数映射到XML元素的方式决定了XML文档的外观。Web服务描述语言(WSDL)定义了两种参数格式设置样式:Encoded和Literal。Encoded是指使用SOAP规范第5节中概述的SOAP编码对参数进行格式设置。Literal是指使用每个参数预定义的XSD架构将参数映射到XML元素。使用XMLWebservices客户端,您可以选择如何将参数映射到XML元素以匹配XMLWebservices需要的形式。使用ASP.NET创建的XMLWebservices支持Literal和Encoded两种参数格式设置样式。该支持根据XMLWebservices方法格式设置选择有所变化。</p><br/> <pclass"\\&quot;a14\\&quot;">请注意,虽然ASP.NET提供了一个广泛的结构用来控制XML格式设置的方式,但是并不保证参数序列化的顺序。</p><br/> <pclass"\\&quot;a14\\&quot;">我们可以写一个WebService例子来说明这一点:</p><br/> <pclass"\\&quot;a14\\&quot;">testSoapParam.asmx:</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;%@WebServiceLanguage&quot;C#&quot;Class&quot;testEncoded&quot;%&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">usingSystem;</p><br/> <pclass"\\&quot;a14\\&quot;">usingSystem.Web.Services;</p><br/> <pclass"\\&quot;a14\\&quot;">usingSystem.Web.Services.Protocols;</p><br/> <pclass"\\&quot;a14\\&quot;">usingSystem.Web.Services.Description;</p><br/> <pclass"\\&quot;a14\\&quot;">usingSystem.Xml;</p><br/> <pclass"\\&quot;a14\\&quot;">usingSystem.Xml.Schema;</p><br/> <pclass"\\&quot;a14\\&quot;">usingSystem.Xml.Serialization;</p><br/> <pclass"\\&quot;a14\\&quot;">usingSystem.Data;</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">publicclasstestEncoded:WebService{</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">[SoapDocumentMethod(UseSoapBindingUse.Encoded,ParameterStyleSoapParameterStyle.Bare)]//参数风格为:Encoded并且是Bare</p><br/> <pclass"\\&quot;a14\\&quot;">[WebMethod()]</p><br/> <pclass"\\&quot;a14\\&quot;">publicstruct1testStructBareEncode(struct1a){</p><br/> <pclass"\\&quot;a14\\&quot;">returna;</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">[SoapDocumentMethod(UseSoapBindingUse.Encoded)]//参数风格为:Encoded</p><br/> <pclass"\\&quot;a14\\&quot;">[WebMethod()]</p><br/> <pclass"\\&quot;a14\\&quot;">publicstruct1testStructEncoded(struct1a){</p><br/> <pclass"\\&quot;a14\\&quot;">returna;</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">[SoapDocumentMethod(UseSoapBindingUse.Literal)]//参数风格为:Literal</p><br/> <pclass"\\&quot;a14\\&quot;">[WebMethod()]</p><br/> <pclass"\\&quot;a14\\&quot;">publicstruct1testStructLiteral(struct1a){</p><br/> <pclass"\\&quot;a14\\&quot;">returna;</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">[SoapDocumentMethod(ParameterStyleSoapParameterStyle.Bare)]//参数风格为:Bare</p><br/> <pclass"\\&quot;a14\\&quot;">[WebMethod()]</p><br/> <pclass"\\&quot;a14\\&quot;">publicstruct1testStructBare(struct1ddd){</p><br/> <pclass"\\&quot;a14\\&quot;">returnddd;</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">publicclassstruct1{</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">publicinti1;</p><br/> <pclass"\\&quot;a14\\&quot;">publicstringj&quot;ok&quot;;</p><br/> <pclass"\\&quot;a14\\&quot;">publicstruct2s2;</p><br/> <pclass"\\&quot;a14\\&quot;">privatestruct2temp;</p><br/> <pclass"\\&quot;a14\\&quot;">publicstruct2s4{</p><br/> <pclass"\\&quot;a14\\&quot;">get{</p><br/> <pclass"\\&quot;a14\\&quot;">returntemp;</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">set{</p><br/> <pclass"\\&quot;a14\\&quot;">tempvalue;</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">publicclassstruct2{</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">publicStringsField;</p><br/> <pclass"\\&quot;a14\\&quot;">}</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">当我们运行客户端代理请求SOAP协议时,我们可以发现不同的参数风格有很大的区别,如使用Literal(默认)和Default时,SOAP协议客户端传输给服务端的XML内容为:</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;?xmlversion&quot;1.0&quot;encoding&quot;utf-8&quot;?&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Envelopexmlns:xsi&quot;http://www.w3.g/2001/XMLSchema-instance&quot;xmlns:xsd&quot;http://www.w3.g/2001/XMLSchema&quot;xmlns:soap&quot;http://schemas.xmlsoap.g/soap/envelope/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Body&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;testStructLiteralxmlns&quot;http://tempuri.g/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;a&gt;//参数名字</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;i&gt;int&lt;/i&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;j&gt;string&lt;/j&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sField&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/s2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s4&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sField&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/s4&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/a&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/testStructLiteral&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Body&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Envelope&gt;</p><br/> <pclass"\\&quot;a14\\&quot;"> 而使用Encoded时, SOAP协议客户端传输给服务端的XML内容为:</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;"> &lt;?xmlversion&quot;1.0&quot;encoding&quot;utf-8&quot;?&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Envelopexmlns:xsi&quot;http://www.w3.g/2001/XMLSchema-instance&quot;xmlns:xsd&quot;http://www.w3.g/2001/XMLSchema&quot;xmlns:soapenc&quot;http://schemas.xmlsoap.g/soap/encoding/&quot;xmlns:tns&quot;http://tempuri.g/&quot;xmlns:types&quot;http://tempuri.g/encodedTypes&quot;xmlns:soap&quot;http://schemas.xmlsoap.g/soap/envelope/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Bodysoap:encodingStyle&quot;http://schemas.xmlsoap.g/soap/encoding/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;types:testStructEncodedxsi:type&quot;types:testStructEncoded&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;ahref&quot;#id1&quot;/&gt;//a为参数名,id号指出该对象是复杂类型,并为链路</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/types:testStructEncoded&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;types:struct1id&quot;id1&quot;xsi:type&quot;types:struct1&quot;&gt; </p><br/> <pclass"\\&quot;a14\\&quot;">&lt;ixsi:type&quot;xsd:int&quot;&gt;int&lt;/i&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;jxsi:type&quot;xsd:string&quot;&gt;string&lt;/j&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s2href&quot;#id2&quot;/&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s4href&quot;#id3&quot;/&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/types:struct1&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;types:struct2id&quot;id2&quot;xsi:type&quot;types:struct2&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sFieldxsi:type&quot;xsd:string&quot;&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/types:struct2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;types:struct2id&quot;id3&quot;xsi:type&quot;types:struct2&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sFieldxsi:type&quot;xsd:string&quot;&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/types:struct2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Body&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Envelope&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">我们可以发现Encoded时,SOAP协议把对象和数组作为复杂类型同其他区分开来,并明确的指明每一个类型的名字。</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">如果是设置为Bare,SOAP协议客户端传输给服务端的XML内容为:</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;?xmlversion&quot;1.0&quot;encoding&quot;utf-8&quot;?&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Envelopexmlns:xsi&quot;http://www.w3.g/2001/XMLSchema-instance&quot;xmlns:xsd&quot;http://www.w3.g/2001/XMLSchema&quot;xmlns:soap&quot;http://schemas.xmlsoap.g/soap/envelope/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Body&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;dddxmlns&quot;http://tempuri.g/&quot;&gt;//dd为参数名</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;i&gt;int&lt;/i&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;j&gt;string&lt;/j&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sField&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/s2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s4&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sField&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/s4&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/ddd&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Body&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Envelope&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">我们将它与上面(如果不设置Bare,默认为wrapped)进行比较可以发现它少了一层&lt;testStructLiteralxmlns&quot;http://tempuri.g/&quot;&gt;。</p><br/> <pclass"\\&quot;a14\\&quot;">而如果我们将Encoded和Bare一起来控制参数时,传输內容变成:</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;?xmlversion&quot;1.0&quot;encoding&quot;utf-8&quot;?&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Envelopexmlns:xsi&quot;http://www.w3.g/2001/XMLSchema-instance&quot;xmlns:xsd&quot;http://www.w3.g/2001/XMLSchema&quot;xmlns:soapenc&quot;http://schemas.xmlsoap.g/soap/encoding/&quot;xmlns:tns&quot;http://tempuri.g/&quot;xmlns:types&quot;http://tempuri.g/encodedTypes&quot;xmlns:soap&quot;http://schemas.xmlsoap.g/soap/envelope/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Bodysoap:encodingStyle&quot;http://schemas.xmlsoap.g/soap/encoding/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;types:struct1xsi:type&quot;types:struct1&quot;&gt; //第一个参数</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;ixsi:type&quot;xsd:int&quot;&gt;int&lt;/i&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;jxsi:type&quot;xsd:string&quot;&gt;string&lt;/j&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s2href&quot;#id1&quot;/&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s4href&quot;#id2&quot;/&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/types:struct1&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;types:struct2id&quot;id1&quot;xsi:type&quot;types:struct2&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sFieldxsi:type&quot;xsd:string&quot;&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/types:struct2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;types:struct2id&quot;id2&quot;xsi:type&quot;types:struct2&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sFieldxsi:type&quot;xsd:string&quot;&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/types:struct2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Body&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Envelope&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">我们可以发现不仅少一层,而且id号也变了。</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">我们不仅可以改变SOAP协议参数传输的框架,也可以改变具体每一个元素的值,如:[XmlElement()]可以指定元素的名字和名字空间(namespace),如果指定了([return:XmlElement(&quot;ReturnValueElement&quot;,IsNullablefalse)] 和 [XmlElement(&quot;MyAddressElement&quot;)),则传输的內容变成:</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;?xmlversion&quot;1.0&quot;encoding&quot;utf-8&quot;?&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Envelopexmlns:xsi&quot;http://www.w3.g/2001/XMLSchema-instance&quot;xmlns:xsd&quot;http://www.w3.g/2001/XMLSchema&quot;xmlns:soap&quot;http://schemas.xmlsoap.g/soap/envelope/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;soap:Body&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;testStructSerxmlns&quot;http://tempuri.g/&quot;&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;MyAddressElement&gt;//指定的元素名字。</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;i&gt;int&lt;/i&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;j&gt;string&lt;/j&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sField&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/s2&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;s4&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;sField&gt;string&lt;/sField&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/s4&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/MyAddressElement&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/testStructSer&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Body&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&lt;/soap:Envelope&gt;</p><br/> <pclass"\\&quot;a14\\&quot;">&nbsp;</p><br/> <pclass"\\&quot;a14\\&quot;">总之,我们可以根据XML的序列化来控制SOAP消息生成XML內容的形式。</p><br/> <pclass"\\&quot;a14\\&quot;">SOAP的內容是很灵活的,这也体现了SOAP协议的兼容性及可扩充性,随着技术的发展,SOAP协议将不断完善,并可以将SOAP与任何能够传输SOAP信封的传输协议或机制(包括SMTP、FTP甚至软盘)结合在一起使用。</p><br/> </td><br/> </tr><br/> </tbody><br/> </table></p>
|