Pull解析XML---学习

来源:互联网 发布:java aes加密 key iv 编辑:程序博客网 时间:2024/05/16 06:35
学习笔记:10.0.2.2对于模拟器来说就是电脑本机的IP地址;
首先要获取到一个XmlPullParserFactory的实例,并借助这个实例得到XmlPullParser对象,然后调用XmlPullParser的setInput()方法将服务器返回的XML数据设置进去就可以开始解析了。解析的过程也是非常简单,通过getEventType()可以得到当前的解析事件,然后在一个while循环中不断地进行解析,如果当前的解析事件不等于XmlPullParser.END_DOCUMENT,说明解析工作还没完成,调用next()方法后可以获取下一个解析事件。
在while循环中,我们通过getName()方法得到当前结点的名字,如果发现结点名等于id、name或version,就调用nextText()方法来获取结点内具体的内容,每当解析完一个app结点后就将获取到的内容打印出来。
<pre name="code" class="java">
private void sendRequestWithHttpClient() {        new Thread(new Runnable() {            @Override            public void run() {                try {                    HttpClient httpClient = new DefaultHttpClient();                    // 指定访问的服务器地址是电脑本机                    HttpGet httpGet = new HttpGet("http://10.0.2.2/get_data.xml");                    HttpResponse httpResponse = httpClient.execute(httpGet);                    if (httpResponse.getStatusLine().getStatusCode() == 200) {                        // 请求和响应都成功了                        HttpEntity entity = httpResponse.getEntity();                        String response = EntityUtils.toString(entity, "utf-8");                        parseXMLWithPull(response);                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }).start();    }    private void parseXMLWithPull(String xmlData) {        try {            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();            XmlPullParser xmlPullParser = factory.newPullParser();            xmlPullParser.setInput(new StringReader(xmlData));            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_TAG: {                        if ("app".equals(nodeName)) {                            Log.d("MainActivity", "id is " + id);                            Log.d("MainActivity", "name is " + name);                            Log.d("MainActivity", "version is " + version);                        }                        break;                    }                    default:                        break;                }                eventType = xmlPullParser.next();            }        } catch (Exception e) {            e.printStackTrace();        }    }




0 0