<apps> <app> <id>1</id> <name>gooel</name> <version>1.0</version> </app> <app> <id>2</id> <name>baidu</name> <version>2.0</version> </app> <app> <id>3</id> <name>sougou</name> <version>3.0</version> </app>
</apps>
/** * Created by 123 on 2018/2/24. * * 使用pull的方式解析xml文件 */ public class Pull { private static final String TAG = "Pull"; private void sendRequestWithOkHttp(){ new Thread(new Runnable() { @Override public void run() { try{ OkHttpClient client =new OkHttpClient(); Request request=new Request.Builder() .url("指定地址") .build(); Response response =client.newCall(request).execute(); String responseData=response.body().string(); parseXMLWithPull(responseData); }catch (Exception e){ e.printStackTrace(); } } }).start(); } /** * 解析xml * */ private void parseXMLWithPull(String xmlData){ try{ //獲取實例 XmlPullParserFactory factory=XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser=factory.newPullParser(); xmlPullParser.setInput(new StringReader(xmlData));//將服務器返回的xml數據設置進去 int eventType=xmlPullParser.getEventType(); String id=""; String name=""; String version=""; while(eventType!=XmlPullParser.END_DOCUMENT){ String nodeName=xmlPullParser.getName();//獲取當前節點的名字 switch (eventType){ //開始解析某個節點 case XmlPullParser.START_TAG: if("id".equals(nodeName)){ id=xmlPullParser.nextText(); }else if("name".equals(nodeName)){ name=xmlPullParser.nextText(); }else if("version".equals(nodeName)){ version=xmlPullParser.nextText(); } break; //完成解析某個節點 case XmlPullParser.END_DOCUMENT: if("app".equals(nodeName)){ Log.d(TAG, "id:"+id); Log.d(TAG, "name:"+name); Log.d(TAG, "verson:"+version); } break; default: break;
} eventType=xmlPullParser.next(); } }catch (Exception e){ e.printStackTrace(); } } }