AXIOM的全称为AXIs Object Model,最初是作为Apache Axis 2的XML对象模型开发的。但是后来变成了WS Commons Project的一部分,以便收益于Axis2外的其他项目。
Overview and Features
AXIOM是一个实现了延迟构造和拉解析(pull parsing)的轻量级XML解析器。延迟构造是AXIOM的最重要的特性之一,它可以实现对象在使用时才构造。而这个延迟构造的功能实现是基于标准的拉式解析器——StAX。
What is Pull Parsing?
简单介绍一下“拉式解析”的概念。一个XML文档可以通过“拉式”或“推式”中任意一种方式来解析。“拉式”是目前流行的XML解析方式。传统的XML解析框架,例如SAX和DOM都是“推式”的,那意味着解析过程是由解析器本身来控制的。这样的实现方式看似不错,并且使用方便,但是在解析大型XML文档时效率就差了,因为整个文档对象模型都要生成在内存里。而“拉式解析”刚好颠倒了解析过程中的控制关系,解析器只对用户指定的部分进行解析(好比传送带上的一盘盘寿司,我只取我感兴趣的那盘,而不是把经过我面前的都拿下来,筛选后再把不感兴趣的放上去,留下想吃的那部分)。这样用户可以决定是保存或是抛弃解析器生成的事件。OM(对象模型)便是基于“拉式解析”的。
Working with AXIOM
要使用AXIOM需要下载它的API包。AXIOM开始是作为AXIS2的一部分出现的,但现在已经可以单独下载了,当然在AXIS2的发布包里还是可以找到它的。
Creating an AXIOM
我们可以通过三种方式创建一个AXIOM:Pull Event stream,Push Event stream或者由程序自动创建。本文主要演示通过第一种和第三种方式来构建一个AXIOM,它们也是创建AXIOM最常用的方式。
Creating an AXIOM from an Input Stream
下面的代码演示了如何从一个文件输入流来创建一个AXIOM:
//首先需要创建一个parser或是reader,这里我们创建一个parser.
XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream(file));
//然后需要创建一个builder来使用刚才创建的parser,这里我们使用StAXOMBuilder。
StAXOMBuilder builder = new StAXOMBuilder(parser);
//最后便可以通过builder获取一个document element。
OMElement documentElement = builder.getDocumentElement();
注意,当我们从builder获取到document element时,builder仅仅是返回一个指向,我们将要操作的XML数据仍然在数据流里,没有被取出来,对象树也没有被创建。对象树只有到我们导航或是构建AXIOM时创建。
Creating an AXIOM Using a String
现在,让我们通过一个字符串来创建AXIOM,这是一个非常简单、方便的方式。
String xmlString = "<book>" +
"<name>Quick-start Axis</name>" +
"<isbn>978-1-84719-286-8</isbn>" +
"</book>";
ByteArrayInputStream xmlStream = new ByteArrayInputStream(xmlString.
getBytes());
//create a builder. Since we want the XML as a plain XML, we can just use the plain OMBuilder
StAXBuilder builder = new StAXOMBuilder(xmlStream);
//return the root element.
OMElement documentElement = builder.getDocumentElement();
Creating an AXIOM Programmatically
//获取一个 factory
OMFactory factory = OMAbstractFactory.getOMFactory();
//使用这个factory来创建一个命名空间对象。
OMNamespace axis2 = factory.createOMNamespace("axis2","ns");
//使用这个factory来创建三个元素。
OMElement root = factory.createOMElement("book",axis2);
OMElement name = factory.createOMElement("name",axis2);
OMElement isbn = factory.createOMElement("isbn",axis2);
在上面的代码里,我们可以看到一组factory.create*方法。这些方法可以用来创建不同的XML对象。在AXIOM里,推荐使用这样的方法来创建AXIOM对象,因为这样可以使得在AXIOM的其它不同实现中切换变得简单。
Adding a Child Node and Attributes
到目前为止,我们已经学习了创建AXIOM和使用StAX的API,但这些对于使AXIOM工作起来还是不够的。我们还需要学习向AXIOM添加子节点。
在OMElement 接口中已经定义了基本的添加和删除方法:
public void addChild(OMNode omNode);
public void addAttribute(OMAttribute omAttribute);
下面让我们实现向root元素添加子节点:
root.addChild(name);
root.addChild(isbn);
*add()方法总是将新添加的子节点作为最后一个子节点加入到父节点中。
待续……
分享到:
相关推荐
NULL 博文链接:https://smartzxy.iteye.com/blog/274362
Axiom是一个微框架,用于在Erlang中构建Web应用程序。 它的灵感来自 ,建在之上。 入门 构建Axiom的目的是使创建Web应用程序变得快速而轻松。 一个最小的应用程序将如下所示: - module ( my_app ). - export ([ ...
Brandwatch设计系统和React模式库入门消费Axiom-React的最佳方法是使用npm软件包。 首先安装所需的Axiom的哪一部分-有关每个软件包中包含的内容的更多信息,请参阅“。添加按钮组件npm i @brandwatch/axiom-...
React Axiom是在React中使用模型的一种方式。 链接 入门 安装React Axiom: npm install --save react-axiom 要为应用程序构建模型类,请导入并扩展React Axiom Model类: import { Model } from 'react-axiom' ...
ADB (Axiom Data Binding) 是Axis2默认的数据绑定机制,它利用了StAX(Streaming API for XML)技术来提高性能。 ##### 创建客户端的步骤 - **获取WSDL文件**:从Web服务提供者处获取WSDL文件。 - **使用wsdl2java...
总结来说,"Axis2入门实例"涵盖了从安装环境、创建服务到运行客户端的全过程,对于希望学习或已经在使用Axis2的人来说,这是一个宝贵的资源。通过深入研究提供的源代码和实践操作,你可以掌握使用Axis2构建和使用Web...
1. **AXIOM (AXIs Object Model)**:这是一种新的XML处理模型,利用最新的XML解析技术,能够在需要时构建对象模型,提高了处理XML数据的灵活性。 2. **消息交换模式**:支持三种模式——In-Only、Robust-In 和 In-...
【Axis2从入门到精通——Webservice在Eclipse下开发教程】 Axis2是Apache软件基金会开发的一款先进的Web服务引擎,它是Axis1.x的全新设计版本,旨在提供更高效、更灵活的Web服务开发体验。本教程将逐步指导你如何...
公理-雨果主题Axiom旨在使您的内容读者和搜索...入门要了解更多信息,请参见下面的“快速入门”,“文档”和“实时示例”资源: 公理资源:公理存储库:执照知识共享署名-相同方式共享4.0国际许可证: 。 版权所有2020
### Axis2 WebService 入门手册知识点详解 #### 一、Axis2简介 **1. AXIOM (AXIs Object Model)** - **定义**:AXIOM 是 Axis2 中用于处理 XML 的核心模型。它不同于传统的 DOM 和 SAX 解析方式,提供了更高效、...
### 数学软件Mathematica—使用入门 #### 一、符号计算系统简介 Mathematica作为一款强大的数学软件,其核心特色之一就是符号计算能力。符号计算系统利用计算机的高速处理能力来帮助用户进行复杂的公式推导和计算...
Sudra Routes / Axiom Verge社区网站 入门 确保您已安装git和docker。 将您自己添加到docker组中,因此您不必以root用户身份运行。 通常,该命令看起来像sudo usermod -a -G docker $USER ,但这取决于您的分发。 ...
总的来说,"Axiom-Full-Stack-Developer-Batch-1-Module-A"的学习内容覆盖了全栈开发的基础技能,旨在为学员搭建一个全面的技术体系,为后续的深入学习打下坚实的基础。通过实践项目和代码仓库"Axiom-Full-Stack-...
- **入门指南**:为用户提供Magnet的基本概念介绍。 - **在线帮助文档**:包含更详细的建模过程和概念解释,可在软件包内或官方网站的文档中心获取。 通过这些教程的学习,用户不仅可以掌握Magnet软件的基本使用...
精简版jar包简化了部署流程,降低了入门门槛,让开发者更专注于业务逻辑的实现。 总的来说,**Axis2精简版jar包**是一个针对Web服务开发的高效工具,它以轻量级的形式提供了一套完整的框架,包括服务组件、传输协议...
本软件基于多种开源库和框架构建,如Apache Axiom、Apache Axis2、Apache Commons Lang等,确保了软件的稳定性和可靠性。 总结而言,Talend Open Studio for Data Integration手册为初学者提供了从安装到数据流转...
5. 数据绑定:Axis2支持多种数据绑定框架,如Axiom(Axis2 Object Model)、JAXB、Castor等,用于XML到Java对象和反之的转换。 二、Axis2快速入门 1. 安装与配置:Axis2的安装通常涉及下载发行版,解压后配置环境...
4. **依赖库**:为了正常工作,Axis2依赖于一系列第三方库,如`wsdl4j.jar`, `neethi.jar`, `axiom-api.jar`, `axiom-impl.jar`等。这些库通常位于`lib`目录下,负责处理XML解析、WS-I兼容性以及WS-Policy等标准。 ...
### Apache Axis2 快速入门知识点详解 #### 一、Apache Axis2简介 Apache Axis2是基于Java的一个高性能、轻量级的Web服务框架。它不仅支持SOAP协议,还提供了RESTful风格的服务接口,旨在帮助开发者更高效地构建高...