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



感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends!