快速业务通道

Java Web服务,第2部分: 深度探索Axis2:AXIOM - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
顺序(与 XML 文档文本中项目的出现顺序相同)传递数据,所以 AXIOM 所实现的按需构造需要某种灵活的处理方法。例如,通常有多个元素处于不完整的(正在构建的过程中)状态,但是这些元素都必须位于继承结构的一条直线中。如果从根元素在顶端的标准 XML 树关系图的角度来看,不完整的元素将始终位于该树右侧的直线中。随着应用程序请求更多的数据,该树逐渐向右扩充,并且首先完成顶端的元素。

使用 AXIOM

就所提供的 API 而言,所有的 XML 文档模型都具有很多相同之处(这并不奇怪,因为它们都需要处理相同的基础数据),但是与其他的文档模型相比,它们又各有千秋。原始的 W3C 文档对象模型 (DOM) 设计提供跨语言和跨平台的兼容性,所以构建于各种接口之上,并且在其自身的版本中避免使用 Java 特定的集合。JDOM 使用了具体类而不是接口,并且在这种 API 中集成了标准的 Java 集合类,许多 Java 开发人员认为它比 DOM 更友好。dom4j 将类似 DOM 的接口和 Java 集合类组合到一起,这种非常灵活的 API 提供了很多强大的功能,但却在一定的程度上增加了复杂性。

AXIOM 与其他文档模型有许多相似之处。它还具有一些与其按需构建的处理过程相关的显著特征,以及支持其用于 Web 服务的专门特性。

实际应用中的 AXIOM

从整体上看,AXIOM 的 API 可能最接近于 DOM,但是它又具有自己的特点。例如,访问方法以使用 java.util.Iterator 实例为基础对不同的部分(如通过 org.apache.axiom.om.OMContainer.getChildren() 以及相关方法所返回的部分)进行访问,而没有使用任何形式的列表。没有将不同的部分索引为列表,导航使用 org.apache.axiom.om.OMNode.getNextOMSibling() 和 org.apache.axiom.om.OMNode.getPreviousOMSibling() 方法,以便按顺序遍历文档树中同一个级别的节点(在这方面,它类似于 DOM)。这种访问和导航方法的结构与按需构建树的工作方式非常吻合,因为这意味着 AXIOM 可以允许您移动到开始元素的第一个子项,而无需首先处理所有的 子元素。

与 DOM 和 dom4j 一样,AXIOM 使用接口定义了用于访问和操作树表示的 API。AXIOM 分发版中包括这些接口的几种不同的专门实现。其中一种实现(在 org.apache.axiom.om.impl.dom 包中)是双重功能的,使用相同的实现类同时支持 AXIOM 和 DOM 接口。因为需要使用数据的 DOM 视图的 Web 服务外接程序的数目较多,所以这种实现可能很有价值。有关更一般的用法,org.apache.axiom.om.impl.llom 包提供了一种基于对象链表的实现(包名中的“ll”表示链表 (linked list))。还对基本的 org.apache.axiom.om 接口和 org.apache.axiom.soap 包树中的实现进行了扩展,后者专门用于处理 SOAP 消息。

为了简要地了解实际应用中的 AXIOM API,我们将对一些示例进行研究,这些示例来自于对 AXIOM 与其他的文档模型进行性能测试对比的代码。清单 3 中提供了第一个示例,这个示例基于为输入文档构建 AXIOM 表示的代码。与使用 DOM 和 dom4j 一样,在使用 AXIOM 进行任何工作之前,您需要获得一个构建模型组件对象的工厂。通过使用 org.apache.axiom.org.OMFactory 接口的 org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory 实现,清单 3 中的代码选择了 AXIOM 接口的基本链表实现。这个工厂接口包括用于从各种来源直接构建文档的方法、用于创建 XML 文档表示的不同部分的方法。清单 3 使用了相应的方法从输入流构建文档。build() 方法返回的对象实际上是 org.apache.axiom.om.OMDocument 的实例,尽管在这段代码中没有指明。

Java Web服务,第2部分: 深度探索Axis2:AXIOM(3)

时间:2011-02-02 IBM Dennis Sosnoski

清单 3. 将文档解析为 AXIOM

import

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号