Android中xml解析--实现软件升级功能

android中自带有pull解析器,所以我们一般都使用pull来解析。这里解析一个最简单的软件升级的xml文件,通过pull解析,获取到软件的版本号,和描述,还有下载地址,实现软件的更新操作。

使用最常用的pull解析器来实现xml解析,实现软件的升级功能!

1.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<info>
    <version>2.0</version>
    <description>有新的版本了,赶快来下载吧!</description>
    <path>http://xxx.xxxx.xx</path>
</info>

2.解析xml的业务bean

public class UpdateInfo {
    private String version;
    private String description;
    private String path;
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
}

3.开始解析xml文件

/**
 * 获取更新信息
 * 
 * @author piao
 * 
 */
public class UpdateInfoProvider {
    //解析xml文件
    public  static UpdateInfo getUpdateInfo(InputStream is) {
        XmlPullParser parser = Xml.newPullParser();
        UpdateInfo info = new UpdateInfo();
        // 初始化解析器
        try {
            parser.setInput(is, "utf-8");
            int type = parser.getEventType();

            while (type != XmlPullParser.END_DOCUMENT) {
                switch (type) {
                case XmlPullParser.START_TAG:
                    if ("version".equals(parser.getName())) {
                        String version = parser.nextText();
                        info.setVersion(version);
                    } else if ("description".equals(parser.getName())) {
                        String description = parser.nextText();
                        info.setDescription(description);
                    } else if ("path".equals(parser.getName())) {
                        String path = parser.nextText();
                        info.setPath(path);
                    }
                    break;
                }
                type = parser.next();
            }
            return info;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
}

4.接受xml文件返回的数据

try {
            URL url=new URL(xxx);
            HttpURLConnection conn=url.openConnection();
            conn.setRequestMethod("GET");
            //连接超时时间
            conn.setConnectTimeout(5000);
            int code = conn.getResponseCode();
            if(code==200){
                InputStream is=conn.getInputStream();
                UpdateInfo updateInfo=new UpdateInfo();
                updateInfo=testxml.getUpdateInfo(is);
                if(updateInfo!=null){
                    //解析成功
                }else{
                    //解析失败
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
posted @ 2012-12-23 00:28  Andye  阅读(2028)  评论(0编辑  收藏  举报