我們在開發(fā)Android app的時候汗菜,常常用到對數(shù)據進行解析秆吵,最常用的就是對xml,與json解析亏掀。json基本都是用到解析框架,fast-json(阿里巴巴公司的開源框架,號稱全世界最快),Gson(Google公司開發(fā)的json解析框架)捂贿。xml的解析一般都是pull,sax,dom解析。
今天來分享一個pull解析的原理巾乳。這個是我要解析的xml數(shù)據的web頁面您没,
在android studio中寫入pull解析代碼
try {
XmlPullFactory factory=XmlPullParserFactory.newInstance();
XmlPullParser parse=factory.newPullParser();
String text=" ";
parse.setInput(new StringReader(這個里面是你要解析的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();
}
對里面做一個解釋,我們首先創(chuàng)建了一個XmlPullParserFactory(pull解析工廠)想鹰,通過解析工廠獲得XmlPullParser(解析員)紊婉,我們的解析員通過setInput(new StringReader(xml字符串))得到你想要解析的xml字符串药版。用一個循環(huán)進行解析辑舷。
int eventType=parse.getEventType();獲取解析的類型。在pull解析當中有五種解析類型槽片,分別是
XmlPullParser.START_DOCUMENT=0(開始解析文檔),
XmlPullParser.EDN_DOCUMENT=1(結束解析文檔),
XmlPullParser.START_TAG=2(開始解析標簽),
XmlPullParser.END_TAG=3(結束解析標簽)何缓;
XmlPullParser.TEXT=4(解析文本時用的);
先來看看我解析出來的結果:
從上圖可以看到看到,
XmlPullParser.START_DOCUMENT,與XmlPullParser.END_DOCUMENT只執(zhí)行了一次还栓。
在這個當中我們發(fā)現(xiàn)2,3,4都在不停的執(zhí)行碌廓。所以我們可以總結pull解析的原理。拿下面這個來舉例說明原理剩盒。
pull解析這個xml字符串谷婆,首先從<?xml version="1.0" encoding="utf-8"?>開始解析,所以出現(xiàn)數(shù)字0.接下來進入開始標簽<apps>顯示數(shù)字2辽聊,此時會進入TEXT纪挎。這一點我開始也不理解,為什么會出現(xiàn)4跟匆,我改動了在<apps>后面加上一句話it is ok异袄。原來<apps>后面是可以加上TEXT.這下就很清楚了。在瀏覽器上的效果圖如下圖:
以此這么下去玛臂,遇到開始標簽顯示2烤蜕,遇到結束標簽顯示3封孙,遇到文本,無論你有沒有寫文本讽营,它都在哪里虎忌,顯示4.遇到結尾顯示1.
這個就是pull解析的全部過程。
pull是依靠數(shù)字來做判斷的xml解析方式斑匪,而且只能是從上往下呐籽。對于我們只想解析一個xml文檔某條數(shù)據來說,就顯得力不從心了蚀瘸。因為pull很傻狡蝶,只能一步一步的解析。
可能大家對于怎么生成一個簡單的xml數(shù)據格式web頁面有所難度贮勃,我來講講怎么制作簡單的xml數(shù)據格式的web頁面贪惹。
需要的工具:Xmapp ,Sublime Text.
上官網下載Xmapp,windows平臺只有一種xmapp安裝包寂嘉,所以無論你是32位的還是64位的都是用的是這個安裝包奏瞬,按照提示安裝。安裝完畢之后泉孩,開啟Apache.如下圖:
安裝完畢之后硼端,開啟Apache.如下圖:
進入Xmapp的安裝目錄,找到一個hotdocs文件夾寓搬,進入珍昨,
創(chuàng)建一個xml格式文本(創(chuàng)建一個文本文檔,更改后綴名),
假如是get_data.xml句喷。
用sublime text打開xml文件進行編輯镣典。輸入xml語法格式的數(shù)據。保存唾琼,一定要記得保存兄春。
此時在你的瀏覽器上輸入:localhost/get_data.xml。此時就會在瀏覽器上顯示你剛才編輯的數(shù)據锡溯。