📜  SOAP-编码

📅  最后修改于: 2020-12-13 14:37:58             🧑  作者: Mango


SOAP包含一组用于编码数据类型的内置规则。它使SOAP消息能够指示特定的数据类型,例如整数,浮点数,双精度数或数组。

  • SOAP数据类型分为两大类-标量类型和复合类型。

  • 标量类型仅包含一个值,例如姓氏,价格或产品描述。

  • 复合类型包含多个值,例如采购订单或股票报价列表。

  • 化合物类型进一步细分为数组和结构。

  • SOAP消息的编码样式是通过SOAP-ENV:encodingStyle属性设置的。

  • 要使用SOAP 1.1编码,请使用值http://schemas.xmlsoap.org/soap/encoding/

  • 要使用SOAP 1.2编码,请使用值http://www.w3.org/2001/12/soap-encoding

  • 最新的SOAP规范采用了XML Schema定义的所有内置类型。 SOAP仍然保留自己的约定,用于定义XML Schema尚未标准化的结构,例如数组和引用。

标量类型

对于标量类型,SOAP采用XML Schema规范指定的所有内置简单类型。这包括字符串,浮点数,双精度数和整数。

下表列出了主要的简单类型,摘录自XML Schema Part 0-入门http://www.w3.org/TR/2000/WD-xmlschema-0-20000407/

Simple Types Built-In to XML Schema
Simple Type Example(s)
string Confirm this is electric.
boolean true, false, 1, 0.
float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN.
double -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN.
decimal -1.23, 0, 123.4, 1000.00.
binary 100010
integer -126789, -1, 0, 1, 126789.
nonPositiveInteger -126789, -1, 0.
negativeInteger -126789, -1.
long -1, 12678967543233
int -1, 126789675
short -1, 12678
byte -1, 126
nonNegativeInteger 0, 1, 126789
unsignedLong 0, 12678967543233
unsignedInt 0, 1267896754
unsignedShort 0, 12678
unsignedByte 0, 126
positiveInteger 1, 126789.
date 1999-05-31, —05.
time 13:20:00.000, 13:20:00.000-05:00

例如,这是具有双重数据类型的SOAP响应-



   
   
      
         54.99
      
   

复合类型

SOAP数组具有一组非常特定的规则,要求您同时指定元素类型和数组大小。 SOAP还支持多维数组,但并非所有SOAP实现都支持多维功能。

要创建数组,必须将其指定为数组的xsi:type 。数组还必须包含arrayType属性。需要此属性来指定所包含元素的数据类型和数组的维。

例如,以下属性指定10个double值的数组-

arrayType = "xsd:double[10]"

相比之下,以下属性指定字符串的二维数组-

arrayType = "xsd:string[5,5]"

这是带有双精度值数组的示例SOAP响应-




   
      

         
            54.99
            19.99
         
      
   

结构包含多个值,但是每个元素都使用唯一的访问器元素指定。例如,考虑产品目录中的项目。在这种情况下,结构可能包含产品SKU,产品名称,描述和价格。这是在SOAP消息中表示这种结构的方式-




   
      
        
         
            Red Hat Linux
            54.99
            
               Red Hat Linux Operating System
            
            A358185
         
      
   

注意-在编写SOAP代码时,请注意适当的缩进。结构中的每个元素都使用唯一的访问者名称指定。例如,上面的消息包括四个访问器元素-名称,价格,描述和SKU。每个元素可以具有自己的数据类型。例如,name指定为字符串,而price指定为double。