我們?cè)陂_發(fā)Android app的時(shí)候,常常用到對(duì)數(shù)據(jù)進(jìn)行解析,最常用的就是對(duì)xml,與json解析。json基本都是用到解析框架,fast-json(阿里巴巴公司的開源框架,號(hào)稱全世界最快),Gson(Google公司開發(fā)的json解析框架)。xml的解析一般都是pull,sax,dom解析。
今天來分享一個(gè)pull解析的原理。這個(gè)是我要解析的xml數(shù)據(jù)的web頁面,

在android studio中寫入pull解析代碼
try {
XmlPullFactory factory=XmlPullParserFactory.newInstance();
XmlPullParser parse=factory.newPullParser();
String text=" ";
parse.setInput(new StringReader(這個(gè)里面是你要解析的xml字符串));
int eventType=parse.getEventType();
//打印出開始解析的文件類型
Log.i(TAG, eventType+"");
//開始解析
while(eventType!=parse.END_DOCUMENT){
String nodeName=parse.getName();
switch (eventType){
case XmlPullParser.START_TAG:
Log.i(TAG, nodeName);
if("appThree".equals(nodeName)){
parse.next();
text=parse.getText().trim();
Log.i(TAG, text+"");
}
break;
case XmlPullParser.END_TAG:
Log.i(TAG, nodeName);
break;
default:
break;
}
eventType=parse.next();
//打印出每次解析eventType變化
Log.i(TAG, eventType+"");
}
}
catch (XmlPullParserException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
對(duì)里面做一個(gè)解釋,我們首先創(chuàng)建了一個(gè)XmlPullParserFactory(pull解析工廠),通過解析工廠獲得XmlPullParser(解析員),我們的解析員通過setInput(new StringReader(xml字符串))得到你想要解析的xml字符串。用一個(gè)循環(huán)進(jìn)行解析。
int eventType=parse.getEventType();獲取解析的類型。在pull解析當(dāng)中有五種解析類型,分別是
XmlPullParser.START_DOCUMENT=0(開始解析文檔),
XmlPullParser.EDN_DOCUMENT=1(結(jié)束解析文檔),
XmlPullParser.START_TAG=2(開始解析標(biāo)簽),
XmlPullParser.END_TAG=3(結(jié)束解析標(biāo)簽);
XmlPullParser.TEXT=4(解析文本時(shí)用的);
先來看看我解析出來的結(jié)果:

從上圖可以看到看到,
XmlPullParser.START_DOCUMENT,與XmlPullParser.END_DOCUMENT只執(zhí)行了一次。
在這個(gè)當(dāng)中我們發(fā)現(xiàn)2,3,4都在不停的執(zhí)行。所以我們可以總結(jié)pull解析的原理。拿下面這個(gè)來舉例說明原理。

pull解析這個(gè)xml字符串,首先從<?xml version="1.0" encoding="utf-8"?>開始解析,所以出現(xiàn)數(shù)字0.接下來進(jìn)入開始標(biāo)簽<apps>顯示數(shù)字2,此時(shí)會(huì)進(jìn)入TEXT。這一點(diǎn)我開始也不理解,為什么會(huì)出現(xiàn)4,我改動(dòng)了在<apps>后面加上一句話it is ok。原來<apps>后面是可以加上TEXT.這下就很清楚了。在瀏覽器上的效果圖如下圖:

以此這么下去,遇到開始標(biāo)簽顯示2,遇到結(jié)束標(biāo)簽顯示3,遇到文本,無論你有沒有寫文本,它都在哪里,顯示4.遇到結(jié)尾顯示1.
這個(gè)就是pull解析的全部過程。
pull是依靠數(shù)字來做判斷的xml解析方式,而且只能是從上往下。對(duì)于我們只想解析一個(gè)xml文檔某條數(shù)據(jù)來說,就顯得力不從心了。因?yàn)閜ull很傻,只能一步一步的解析。
可能大家對(duì)于怎么生成一個(gè)簡單的xml數(shù)據(jù)格式web頁面有所難度,我來講講怎么制作簡單的xml數(shù)據(jù)格式的web頁面。
需要的工具:Xmapp ,Sublime Text.
上官網(wǎng)下載Xmapp,windows平臺(tái)只有一種xmapp安裝包,所以無論你是32位的還是64位的都是用的是這個(gè)安裝包,按照提示安裝。安裝完畢之后,開啟Apache.如下圖:


安裝完畢之后,開啟Apache.如下圖:

進(jìn)入Xmapp的安裝目錄,找到一個(gè)hotdocs文件夾,進(jìn)入,

創(chuàng)建一個(gè)xml格式文本(創(chuàng)建一個(gè)文本文檔,更改后綴名),

假如是get_data.xml。

用sublime text打開xml文件進(jìn)行編輯。輸入xml語法格式的數(shù)據(jù)。保存,一定要記得保存。

此時(shí)在你的瀏覽器上輸入:localhost/get_data.xml。此時(shí)就會(huì)在瀏覽器上顯示你剛才編輯的數(shù)據(jù)。
