這篇文章主要介紹了 android pull怎么解析xml,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的茂南網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
pull解析xml文件,和sax和dom一樣 都可以脫離android單獨(dú)使用,pull和sax的原理一樣,不一樣的地方是pull讀取xml文件后調(diào)用方法返回的是數(shù)字,
讀取到xml的聲明返回數(shù)字0 START_DOCUMENT;
讀取到xml的結(jié)束返回數(shù)字1 END_DOCUMENT ;
讀取到xml的開始標(biāo)簽返回數(shù)字2 START_TAG
讀取到xml的結(jié)束標(biāo)簽返回數(shù)字3 END_TAG
讀取到xml的文本返回數(shù)字4 TEXT
pull是開源的項目 源碼下載地址http://www.xmlpull.org/
被解析的xml文檔和android dom 解析xml方式 中的xml文檔一樣,命名為pullTest.xml.
private String pullParseXml(InputStream inputStream) { String result = ""; //解析全部的xml boolean isParse = true; try { // 創(chuàng)建一個xmlPullParser的工廠 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 獲取一個解析實例 XmlPullParser parse = factory.newPullParser(); // 設(shè)置輸入流的編碼格式 parse.setInput(inputStream, "UTF-8"); // 當(dāng)前事件的類型 int eventType = parse.getEventType(); while (XmlPullParser.END_DOCUMENT != eventType) { // 當(dāng)前節(jié)點的名稱 String nodeName = parse.getName(); switch (eventType) { case XmlPullParser.START_TAG: if ("group".equals(nodeName)) { // 解析節(jié)點中的屬性值,getAttributeCount()獲取屬性的個數(shù) for (int i = 0; i < parse.getAttributeCount(); i++) { // 屬性名稱 String groupName = parse.getAttributeName(i); // 屬性名稱對應(yīng)的值 String nameValue = parse.getAttributeValue(i); result = result + groupName + " = " + nameValue; } result += "\n"; } else if ("person".equals(nodeName)) { String personName = parse.getAttributeValue(0); String age = parse.getAttributeValue(1); result = result + "personName = " + personName + "age =" + age + "\n"; } else if ("chinese".equals(nodeName)) { //節(jié)點對應(yīng)的文本 String chinese = parse.nextText(); Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(chinese); chinese = m.replaceAll(""); result = result + "chinese = " + chinese; } else if ("english".equals(nodeName)) { String english = parse.nextText(); Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(english); english = m.replaceAll(""); result = result + "english = " + english + "\n"; } break; case XmlPullParser.END_TAG: //在解析到一個group節(jié)點完成時,退出解析xml文件 // if("group".equals(nodeName)){ // eventType = XmlPullParser.END_DOCUMENT; // isParse = false; // } break; default: break; } //整個xml文件全部解析 if(isParse){ eventType = parse.next(); } } } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; }
pull和sax不同最主要的體現(xiàn)在pull可以由客戶隨時終止解析xml.sax解析,只能從文檔頭一直讀到尾,中間不能停止也不能對文件進(jìn)行修改。直到解析完了整個文檔才會返回。
//在解析到一個group節(jié)點完成時,退出解析xml文件 // if("group".equals(nodeName)){ // eventType = XmlPullParser.END_DOCUMENT; // isParse = false; // }
只要滿足退出解析的條件,只需要設(shè)置如下代碼即可。
eventType = XmlPullParser.END_DOCUMENT;
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“ android pull怎么解析xml”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!