快速业务通道

SOAP协议初级指南 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
上所示。对引用组合类型的存取元素(就是那些自身用子存取元素来构造的存取元素),有两个技术来对存取元素进行编码。最简单的方法是把被结构化的值直接嵌入在存取元素下。考虑下面的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>

SOAP协议初级指南(9)

时间:2010-12-10

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

与存取元素相关的另一个问题是由于类型关系引起的可代换性。由于前面的adjustment类不是一个final类型的类,transfer对象的from和to域实际引用继承类型的实例是可能的。为了支持这种类型兼容的替换,SOAP使用一个名域限定的类型属性的XML Schema约定。这种类型属性的值是一个对元素具体的类型的限制的名字。考虑下面的adjustment扩展类:

package com.bofsoap.IBank; public class auditedadjustment extends adjustment { public int auditlevel; }

给出下面Java语言:

transfer xfer = new transfer(); xfer.from = new auditedadjustment(); xfer.from.account = 3514; xfer.from.amount = -100; xfer.from.auditlevel = 3; xfer.to = new adjustment(); xfer.to.account = 3518; xfer.from.amount = 100;

在SOAP中transfer对象的序列化形式如下所示:

<t:transfer xmlns:xsd=‘http://www.w3.org/1999/XMLSchema‘ xmlns:t=‘urn:develop-com:java:com.bofsoap.IBank‘ > <from xsd:type=‘t:auditedadjustment‘ > <account>3514</account> <amount>-100.0</amount> <auditlevel>3</auditlevel > </from> <to> <account>3518</account> <amount>100.0</amount> </

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号