Axiom ,也就是Axis Object Model,Apache下一款XML对象模型
Axis2用Axiom处理soap文档和soap信息。
- Lightweight(轻量),更少的内存需要。
- Deferred building(延迟构建)
- Pull based(pull模式),OM基于StAX--标准的pull parser API
。
Axiom采用pull解析方式,基于StAX(JSR173)。
SAX和DOM 都是基于push的解析方式,也就是说解析控制在parser本身。
Axiom和StAX紧密相关,要使用Axiom,StAX相关的jar包也必须在classpath下
。
使用 XMLBench Document Model Benchmark 测试的结果表明,AXIOM 的性能和现有的高性能对象模型相当。但是
AXIOM 的内存占用要好于现有多数依靠 SAX 和/或 DOM 输入输出的对象模型。因此对于 Web 服务引擎或内存受限制设备这样的 XML
处理器,AXIOM 是一种理想的选择,它可用于一般的 XML 处理
<?xml version="1.0" encoding="UTF-8"?>
<fool>
<student>
<name>jack</name>
<id>12</id>
<age>22</age>
<sex>male</sex>
</student>
</fool>
//构建文件输入流
InputStream ins = AXIOMTest1.class.getResourceAsStream("/test1.xml");
//通过XMLInputFactory创建一个XML文件读取流
XMLStreamReader xmlStreamReader = XMLInputFactory.newFactory().createXMLStreamReader(ins);
//构建一个StAXOMBuilder对象
StAXOMBuilder axomBuilder = new StAXOMBuilder(xmlStreamReader);
//获取整个文档元素
OMElement element = axomBuilder.getDocumentElement();
System.out.println(element);//打印包括<fool>标签内的所有内容
//获取文档元素的第一个子元素
OMElement firstElement = element.getFirstElement();
System.out.println(firstElement);//打印第一个Student标签内的所有内容
//获取指定QName下的第一个子元素
OMElement ageElement = firstElement.getFirstChildWithName(new QName("age"));
System.out.println(ageElement);//打印<age>23</age>
//获取子元素集合
Iterator<OMElement> ite = firstElement.getChildElements();
for (OMElement e = ite.next(); ite.hasNext();e = ite.next()) {
}
OutputStream os = new FileOutputStream("D:/test.xml");
XMLStreamWriter streamWriter = XMLOutputFactory.newFactory().createXMLStreamWriter(os);
//获取对象模型工厂类(元素都是通过该工厂创建)
OMFactory factory = OMAbstractFactory.getOMFactory();
//通过工厂创建一个文档对象
OMDocument document = factory.createOMDocument();
//通过工厂创建一个root节点元素
OMElement rootElement = factory.createOMElement(new QName("root"));
OMElement personElement = factory.createOMElement(new QName("person"));
//给节点元素添加文本内容
personElement.addChild(factory.createOMText("测试"));
//给节点添加属性
personElement.addAttribute(factory.createOMAttribute("id", null, "101"));
//节点元素添加到根节点下
rootElement.addChild(personElement);
//将根节点添加到文档中
document.addChild(rootElement);
//序列化文档对象到输出流中
document.serialize(streamWriter);
streamWriter.flush();
streamWriter.close();
转http://blog.sina.com.cn/s/blog_6974144701012lud.html
分享到:
相关推荐
《AxiomV门禁控制与安全管理集成系统用户手册》是加拿大RBH门禁技术公司编写的一份详细文档,用于指导用户如何使用AxiomV系统,该系统集成了门禁控制和安全管理功能。本手册内容详尽,但其中包含的信息有可能超过...
本文将详细介绍这个库的核心功能,使用场景,以及如何在项目中集成和管理其依赖。 AXIOM(Abstract eXtensible Markup Language Object Model)是一个开源的、基于StAX(Streaming API for XML)的XML对象模型,它...
本文将详细介绍Axiom API的功能、特点以及如何在实际项目中使用它。 Axiom(Abstract XML Information Set Model)API是一个基于StAX(Streaming API for XML)的XML对象模型,设计目标是提供高性能和低内存消耗。...
本文将详细介绍这个库的核心功能、使用场景以及与其它相关技术的比较。 Axiom全称为Apache AXIOM(Architecture eXtensible Information Object Model),它是Apache软件基金会的一个项目,旨在提供一个高效且灵活...
《axiom-api-1.2.5.jar.zip:解析与应用》 在IT行业中,Java开发者经常需要处理各种库和框架,以便构建高效且功能丰富的应用程序。"axiom-api-1.2.5.jar.zip"就是一个这样的资源,它是Apache Axiom API的一个版本,...
本文将详细介绍Apache Axiom API的基本概念、功能特性以及如何在项目中正确使用。 首先,让我们了解什么是Apache Axiom。Axiom是Advanced eXtensible Information Model的缩写,它是一个基于StAX(Streaming API ...
axiom-c14n-1.2.8.jar axiom-c14n-1.2.8.jar axiom-c14n-1.2.8.jar
此存储库包含与 AXIOM Beta 硬件相关的所有信息和文件。 AXIOM Beta是由apertus°制造的开源、开放硬件、专业级数码胶片相机。它被设计成模块化的,例如可互换的传感器前端等,并支持以 4K 分辨率录制。 相机结构...
- **用途**: 与Axiom API相辅相成,`axiom-impl`提供了Axiom API的实际实现,包括具体的类和方法。 综上所述,这个Maven项目配置了一系列关键的依赖库,旨在构建一个功能完善的Web服务客户端。通过对这些依赖的详细...
3. **高级特性**:介绍如何利用WS-*标准进行安全性设置、事务管理、可靠消息传递等。 4. **代码生成**:说明如何自动生成客户端和服务器端的代理类,以及如何从WSDL文件中生成Java代码。 5. **模块和插件**:描述...
- **多种编程模型**:支持SOAP消息处理器、Axiom(面向XML的API)和RESTful服务。 - **丰富的库支持**:提供了大量预定义的模块和扩展。 #### 3.2 AXIS2 此处可能有误,"AXIS2"再次出现,应该是"AXIS"的介绍。AXIS...
### Magnet 教程知识点解析 #### 一、Magnet 软件简介 ...通过这些教程的学习,用户不仅可以掌握Magnet软件的基本使用方法,还能深入了解电磁仿真技术的核心原理和技术细节,从而更好地应用到实际工作中去。
#### 背景与介绍 在Web服务领域,Apache Axis项目是开源社区中的佼佼者,而Axis2作为该项目的第二代产品,自发布以来就以其高性能、灵活性和丰富的功能集赢得了广泛的赞誉。与第一代产品Axis1.x相比,Axis2不仅在...
本文将详细介绍在使用Axis2构建客户端程序时所需的最少jar包,以避免不必要的依赖冗余。 首先,我们需要理解Axis2的模块化结构。Axis2由多个模块组成,每个模块都有特定的功能,例如传输层、消息处理、类型映射等。...
- **作用**: 与Axiom API配合使用,提供具体的XML处理逻辑。 #### 7. **backport-util-concurrent-3.1** - **功能**: 提供了Java并发编程的支持。 - **作用**: 对于需要高效并发处理的场景,这个库是非常有用的。 ...
- "web_service技术--axis2在eclipse下开发指南"、"Axis2介绍和例子"、"axis2新手教程实例"等文档,详细介绍了在Eclipse环境下使用Axis2开发和部署Web Service的步骤和示例。 通过这些资料,开发者可以深入了解...
架借鉴了OGRE/Axiom,去掉了跨平台和跨图形API的能力并尽量使用 DirectX自带的功能,结构得到了很大的简化。 操作说明: 例子中W,A,S,D是行走,按住Shift能快走,走到左边的方块堆可以点 鼠标左键发射子弹打倒方块...
架借鉴了OGRE/Axiom,去掉了跨平台和跨图形API的能力并尽量使用 DirectX自带的功能,结构得到了很大的简化。 操作说明: 例子中W,A,S,D是行走,按住Shift能快走,走到左边的方块堆可以点 鼠标左键发射子弹打倒方块...
Axis2的数据绑定是灵活的,可以选择直接使用AXIOM,使用与原来的Axis相似的简单数据绑定方法,或使用XMLBeans、JiBX或JAXB2.0等专用数据绑定框架。 CXF CXF是Apache软件组织的子项目,也是一种实现Web服务的技术...