Axiom簡述 Axis2 的XML處理器

2021-09-01 04:47:20 字數 3090 閱讀 7305

axiom簡述--axis2 的xml處理器

axis2用axiom,也就是axis object model,處理soap文件。

axiom採用pull解析方式,基於stax(jsr173)。

pull解析是最近處理xml的一種趨勢。而sax和dom都是基於push的解析方式,也就是說解析控制在parser本身。push解析方式很容易使用,但在處理巨型xml文件時效率並不好,(因為要在記憶體中生成完成的物件模型)。pull解析方式顛倒了這種控制方式,增強了parser,只在使用者需要的時候菜進行處理。使用者決定處理或者忽略parser生成的事件。

axiom和stax緊密相關,要使用axiom,stax相關的jar包也必須在classpath下。

axiom的一些特性:

1、lightweight(輕量),更少的記憶體需要。

2、deferred building(延遲構建),可以說是最重要的om特性,

3、pull based(pull模式),om基於stax--標準的pull parser api。

axiom讀xml:

// 首先構建parser,

xmlstreamreader parser = xmlinputfactory.newinstance().createxmlstreamreader(

new fileinputstream("5.xml"));

// 還需要builder物件,

staxombuilder builder = new staxombuilder(parser);

// get the root element

// omelement documentelement = builder.getdocumentelement();

omdocument doc = builder.getdocument();

omelement cre = doc.getomdocumentelement().getfirstchildwithname(new qname("fool"));

// omelement有一系列的get方法來獲得內容。

cre.serialize(system.out); // cache on

cre.serializeandconsume(system.out); // cache off

// will not build the omtree in the memory.

// so you are at your own risk of losing information.

string crestr = cre.tostringwithconsume();

// call tostring, will build the omtree in the memory.

system.out.println(cre);

axiom寫xml:

// 可以構建writer做輸出器,

xmlstreamwriter writer = xmloutputfactory.newinstance().createxmlstreamwriter(

new fileoutputstream("2.xml"));

// 通常通過omfactory來構造xml文件中的element,下面是一些示例**。

ele.serialize(system.out); // 即使detach(),依然會輸出ele

doc.serialize(system.out); // 如果detach(),就不會有ele到document裡。

關於serialize和serializeandconsume,前者會強制構建omtree,或者則不會。

關於detach,它只影響omelement本身和omtree的關係,並不影響omelement本身。

與之對應的還有乙個build方法,build會強制build整個omtree出來。

這兩個方法通常用在處理omelement與omtree的關係上。從輸入流構建出omelement(build)以及把omelement從輸入流斷開(detach),以便放到輸出流。輸入流和輸出流是不同的omtree。

測試用的xml文件(5.xml),

<?xml version=『1.0『 encoding=『utf-8『?>

yyele

Axis2學習筆記一 Axiom 篇

axis2學習筆記一 axiom 篇 一 簡介 axis2 是繼 axis1 之後 apache 軟體組織推出的下一代 webservice 的實現品 和 1.0 比較有如下較大的改進 1.不是在 axis1 的基礎上擴充套件,而是重新開發,重新實現。2.支援 soap1.1 和 soap1.2.及...

Axis2學習筆記一 Axiom 篇

一 簡介 axis2 是繼 axis1 之後 apache 軟體組織推出的下一代 webservice 的實現品 和 1.0 比較有如下較大的改進 1.不是在 axis1 的基礎上擴充套件,而是重新開發,重新實現。2.支援 soap1.1 和 soap1.2.及 rest 風格。3.新的 xml 處...

axis2接收json 利用AXIS2返回JSON

在已經有axis2的基礎之上操作 4 在axis2.xml中新增json訊息格式,找到標籤,在這個標籤裡新增如下 段 class org.apache.axis2.json.jsonmessageformatter class org.apache.axis2.json.jsonbadgerfish...