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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值