利用Eclipse Modeling Framework加强JAX-RPC类型映射的功能 - 编程入门网
nputStream(b));
return doc.getDocumentElement();
}
清单 6.将 DOMElement 转换为 SOAPElement
利用Eclipse Modeling Framework加强JAX-RPC类型映射的功能(5)时间:2011-03-11 IBM Jeffrey Liu全局元素和局部元素 正如前面所提到的,供应链 EMF 模型依靠映射到 Java 的元素将 XML 片段转换为相应的基于 EMF 的 Java 类。但是,默认的情况是,EMF 代码生成器只为全局元素生成映射条目,而不为局部元素生成。全局元素是 XML 模式文档中作为模式元素的子元素来声明的元素,而局部元素却不是。默认的映射清单不包括局部元素,因此,供应链 EMF 模型不能转换描述局部元素实例的 XML 片段。研究一下清单 7中的示例 XML 模式。相应的 EMF 模型识别清单 8中的全局元素实例。相反,清单 9中的局部元素实例却导致异常。要支持局部元素的转换,必须在 Java 映射中添加自定义元素。 清单 7.XML 模式示例
清单 8.全局元素实例
清单 9.局部元素实例
考虑 SupplyChainSchema.xsd 文档和 WSDL to Java Bean Skeleton wizard 生成的 JavaBean 时,您将看见有三个局部元素被映射到 SOAPElement: 来自 <PurchaseOrderType> 复杂类型的 <paymentMethod> 元素 来自 <PurchaseOrderType> 复杂类型的 <item> 元素 来自 <ShippingNoticeType> 复杂类型的 <item> 元素 要在 <paymentMethod> 这个局部元素和 com.example.supplychain.PaymentMethodType 这个 Java 类之间建立自定义映射,请在 SupplyChainEMF 项目中打开 /SupplyChainEMF/src/com/example/supplychain/impl /SupplychainPackageImpl.java。将清单 10 中的代码片段添加到 initializePackageContents() 方法的尾部。该方法将作为初始化的一部分被调用。 清单 10.添加一个局部元素映射
接下来,将为两个 <item> 局部元素建立自定义映射。和 <paymentMethod> 元素不同的是,不能在 initializePackageContents() 方法中添加静态映射条目,这是因为 EMF 模型对每个局部元素名称只允许一个映射。要克服这个缺点,可以象使用映射那样动态注册并移除必要的映射。清单 11 显示了 4 个方法,这 4 个方法允许您从 <PurchaseOrderType> 复杂类型中注册和移除 <item> 元素映射,以及从 <ShippingNoticeType> 复杂类型中注册和移除 <item> 元素映射。在 SupplyChainEMF 项目中,打开 SupplychainPackageImpl.java 并添加清单 11所示的代码片段。 清单 11.添加一个局部元素映射
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |