【Android 記錄】xml文件的pull解析

<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();
        }
    }






}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章