当前位置: 首页 > article >正文

AXIOM的介绍与使用

  • 什么是AXIOM?

Axiom ,也就是Axis Object Model,Apache下一款XML对象模型

Axis2用Axiom处理soap文档和soap信息。
  • Axiom的一些特性:
  1. Lightweight(轻量),更少的内存需要。
  2. Deferred building(延迟构建)
  3. Pull based(pull模式),OM基于StAX--标准的pull parser API
  • pull模式
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
http://www.lryc.cn/news/2416930.html

相关文章:

  • 天呐!你知道MSBuild都干了些什么
  • KingbaseES数据库审计
  • NDK基础
  • 两个必看协议-最全面-最直接-最暴力-一篇文章带你读懂-HTTP、HTTPS
  • 探索WebRTC Streamer:实时通信的新境界
  • Oracle:TNS数据传输协议-基础篇
  • C# DataTable 总结常用方法
  • Xamarin移动开发的优点和缺点
  • gcc 编辑器基本使用
  • pr找不到msvcr110.dll无法执行代码怎么解决?总结7个有效方法分享
  • 析构函数
  • Jquery各版本下载,附Jquery官网下载方法
  • 16进制颜色
  • 详解 LPC
  • 坑逼的PL2303与WIN11
  • 安装天堂遇到的问题及解决方法
  • 两款WiFi无线网络扫描工具软件 WirelessMon Xirrus WiFi Inspector
  • DTM、DEM、DSM与DOM的概念
  • ebook_7种开放式eBook格式指南
  • QGC地面站使用教程
  • BootStrap----table
  • 并发编程之CyclicBarrier详解
  • 【笔记】w5500 官方DHCP库 使用
  • c语言钩子函数
  • 无忧启动源码 仿音速启动
  • 简易钓鱼网站的构建(Kali SetoolKit)
  • UNIX环境高级编程——UNIX基础知识
  • 我的ubuntu8.04安装经验
  • 常见几种浏览器兼容性问题与解决方案
  • Autodesk CAD帮助文档总结二 DXF 概述