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...