当前位置: 首页 > news >正文

SOAP协议初级指南(六)

   SOAP数据类型

  在SOAP消息中,每个元素可能是一个SOAP结构元素,一个根元素,一个存取元素或一个独立的元素。在SOAP中,soap:Envelope, soap:Body和 soap:Header 是唯一的三个结构元素。它们的基本关系由下列XML Schema所描述:

<schema
targetNamespace=‘urn:schemas-xmlsoap-org:soap.v1‘>
<element name=‘Envelope‘>
<type>
<element name=‘Header‘ type=‘Header‘
minOccurs=‘0‘ />
<element name=‘Body‘ type=‘Body‘
minOccurs=‘1‘ />
</type>
</element>
</schema>

  在SOAP元素的四种类型中,除了结构元素外都被用作表达类型的实例或对一个类型实例的引用。

  根元素是显著的元素,它是soap:Body 或是 soap:Header的直接的子元素。其中soap: Body只有一个根元素,它表达调用、响应或错误对象。这个根元素必须是soap:Body的第一个子元素,它的标记名和域名URI必须与HTTP SOAPMethodName头或在错误消息情况下的soap:Fault相对应。而soap:Header元素有多个根元素,与消息相联系的每个头扩展对应一个。这些根元素必须是soap:Header的直接子元素,它们的标记名和名域URI表示当前存在扩展数据的类型。

  存取元素被用作表达类型的域、属性或数据成员。一个给定类型的域在它的SOAP表达将只有一个存取元素。存取元素的标记名对应于类型的域名。考虑下列Java 类定义:

package com.bofsoap.IBank;
public class adjustment {
public int account ;
public float amount ;
}

  在一个SOAP消息中被序列化的实例如下所示:

<t:adjustment
xmlns:t=‘urn:develop-com:java:com.bofsoap.IBank‘>
<account>3514</account>
<amount>100.0</amount>
</t:adjustment>

  在这个例子中,存取元素account和amount被称着简单存取元素,因为它们访问对应于在W3C XML Schema规范 (见 http://www.w3.org/TR/XMLSchema-2) 的Part 2中定义的原始数据类型的值。这个规范指定了字符串,数值,日期等数据类型的名字和表达方式以及使用一个新的模式定义中的<datatype>结构来定义新的原始类型的机制。

  对引用简单类型的存取元素,元素值被简单地编码为直接在存取元素下的字符数据,如上所示。对引用组合类型的存取元素(就是那些自身用子存取元素来构造的存取元素),有两个技术来对存取元素进行编码。最简单的方法是把被结构化的值直接嵌入在存取元素下。考虑下面的Java类定义:

package com.bofsoap.IBank;
public class transfer {
public adjustment from;
public adjustment to;
}

  如果用嵌入值编码存取元素,在SOAP中一个序列化的transfer对象如下所示:

<t:transfer
xmlns:t=‘urn:develop-com:java:com.bofsoap.IBank‘

<from>
<account>3514</account>
<amount>-100.0</amount>
</from>
<to>
<account>3518</account>
<amount>100.0</amount>
</to>
</t:transfer>

  在这种情况下,adjustment对象的值被直接编码在它们的存取元素下。

  在考虑组合存取元素时,需要说明几个问题。先考虑上面的transfer类。类的from和to的域是对象引用,它可能为空。SOAP用XML Schemas的null属性来表示空值或引用。下面例子表示一个序列化的transfer对象,它的from域是空的:

<t:transfer
xmlns:t=‘urn:develop-com:java:com.bofsoap.IBank‘
xmlns:xsd=‘http://www.w3.org/1999/XMLSchema/instance‘

<from xsd:null=‘true‘ />
<to>
<account>3518</account>
<amount>100.0</amount>
</to>
</t:transfer>

  在不存在的情况下, xsd:null属性的隐含值是false。给定元素的能否为空的属性是由XML Schema定义来控制的。例如下列XML Schema将只允许from存取元素为空:

<type name=‘transfer‘ >
<element
name=‘from‘
type=‘adjustment‘
nullable=‘true‘
/>
<element
name=‘to‘
type=‘adjustment‘
nullable=‘false‘ <!— false is the default —>
/>
</type>

  在一个元素的Schema声明中如果没有nullable属性,就意味着在一个XML文档中的元素是不能为空的。Null存取元素的精确格式当前还在修订中�要了解用更多信息参考最新版本的SOAP规范。

相关文章:

  • SOAP协议初级指南(七)
  • 关闭mysql权限管理_Mysql 用户权限管理
  • SOAP协议初级指南(八)
  • python 守护程序检测进程是否存在_python定时检查启动某个exe程序(守护进程)
  • SOAP协议初级指南(九)
  • python创建工作簿_使用工作表名称作为键从python中的excel工作簿创建词典
  • 参加developerWorks活动
  • mysql8.0.11 安装失败_mysql8.0.11安装遇到问题及解决方法。
  • ActiveBPEL引擎(4.0)启动步骤分析(ActiveBPEL Engine Startup Steps)
  • 3COM SS3 4400交换机VLAN功能设置
  • python集合的操作符_深入解析Python中的集合类型操作符
  • 一句话解释python的装饰器_如何理解python的描述器和装饰器?
  • 认识COS
  • 康佳lc32es62没声音_康佳LC32ES62有伴音,无图像无字符
  • 解析.Net框架下的XML编程技术
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • EOS是什么
  • express + mock 让前后台并行开发
  • HTTP请求重发
  • Js基础知识(四) - js运行原理与机制
  • NSTimer学习笔记
  • overflow: hidden IE7无效
  • select2 取值 遍历 设置默认值
  • 从tcpdump抓包看TCP/IP协议
  • 基于webpack 的 vue 多页架构
  • ------- 计算机网络基础
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 阿里云移动端播放器高级功能介绍
  • 进程与线程(三)——进程/线程间通信
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (003)SlickEdit Unity的补全
  • (04)odoo视图操作
  • (2)STM32单片机上位机
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (第61天)多租户架构(CDB/PDB)
  • (六)激光线扫描-三维重建
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十一)图像的罗伯特梯度锐化
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)winform之ListView
  • (转)可以带来幸福的一本书
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET CLR基本术语
  • .NET Project Open Day(2011.11.13)
  • .Net Remoting常用部署结构
  • .net 按比例显示图片的缩略图
  • .NET开发人员必知的八个网站