Android平台下sax,dom,pull解析

2021-08-27 17:40:59 字數 2287 閱讀 2809

1.android中三種xml的解析方式,分別為dom,sax,pull,其中pull的解析方式最優

2.dom,sax,pull解析方式的區別

(1).dom解析方式:

首先一下子載入整個文件然後再挨個節點解析,費流量

優點:對於處理大文件,以及能力強的cpu效能比較快

缺點:對於處理能力不夠強的cpu一下子可能受不了,就像乙個人一口先吃下乙個大西瓜,再來嚼.

(2).sax解析方式:

sax是事件驅動型解析方式

雖說是事件驅動型的和pull差不多,但沒有像pull那樣提供next介面,想向下繼續解析就向下,沒有靈活性,死板,包括得到資料也是用模板弄好,對於特殊的資料組裝還要用變數控制。

sax是選擇性的解析,他是解析符合條件的內容。

手動停止:

解析完需要的東西後就拋異常吧,比如throw new saxexception("已拿到資料,中斷解析!!!");

(3).pull的解析方式:

pull驅動型解析方式,載入時不把所有的節點都載入到解析機裡,只是去乙個乙個節點去查詢,如果是乙個節點而且需要這個節點就取出來,不像dom,不管你要不要都放在解析機裡,要拿就拿,不拿就算了.,減少流量的使用

3.綜上覺得pull解析方式最優,通過除錯**發現,解析同乙個xml檔案,pull解析方式花的時間最少.

核心**如下:

//dom解析方式

privatelistfetchriverfromxmlbydom(stringfilename)catch(parserconfigurationexceptione)catch(saxexceptione)catch(ioexceptione)

log.d(t,"execfetchriverformxmlbysaxusetime="

+(system.currenttimemillis()-starttime));

returnrivers;

}privateclassmysaxhandlerextendsdefaulthandler

@override

publicvoidstartdocument()throwssaxexception

@override

publicvoidenddocument()throwssaxexception

@override

publicvoidstartelement(stringuri,stringlocalname,stringqname,

attributesattributes)throwssaxexception

if(isriver)elseif(tagname.equals(imageurlstr))}}

@override

publicvoidendelement(stringuri,stringlocalname,stringqname)

throwssaxexception

if(isriver)elseif(tagname.equals(imageurlstr))}}

@override

publicvoidcharacters(charch,intstart,intlength)

throwssaxexceptionelseif(isimageurl)

}publiclistgetrivers()

}

pull解析方式:

privatelistfetchriverformxmlbypull(stringfilename)elseif(river!=null)elseif(tag.equalsignorecase(imageurlstr))

}break;

//結束節點

ca***mlpullparser.end_tag:

"end_tag:"+xmlpullparser.getname());

if(xmlpullparser.getname().equalsignorecase(riverstr)&&river!=null)

break;

default:

break;

}eventtype=xmlpullparser.next();

}}catch(xmlpullparserexceptione)catch(ioexceptione)

log.d(t,"execfetchriverformxmlbypullusetime="

+(system.currenttimemillis()-starttime));

returnrivers;

}

Android平台下sax,dom,pull解析

1.android中三種xml的解析方式,分別為dom,sax,pull,其中pull的解析方式最優 2.dom,sax,pull解析方式的區別 1 dom解析方式 首先一下子載入整個文件然後再挨個節點解析,費流量 優點 對於處理大文件,以及能力強的cpu效能比較快 缺點 對於處理能力不夠強的cpu...

Android平台下載入PDF檔案方案解析

第一種方案 public void openpdfreader int index catch activitynotfoundexception e 第二種方案 先讚下ios平台,載入pdf有各種方案,系統自帶api,uiwebview無縫載入顯示,可惜android平台採用簡單的webview載...

Android平台下ndk編譯應用程式

新建jni目錄 設定好android ndk編譯環境 將原始碼檔案放在當前目錄下 以main.cpp檔案為例 jni目錄下的結構如下 android.mk內容如下 local path call my dir include clear vars local src files main.cpp l...