XML文件Pull解析

public class MainActivity extends Activity {


String url = "http://www.oschina.net/MobileAppVersion.xml";
private Handler h = new Handler() {//在handler中操作数据设置到你想要的控件中
public void handleMessage(android.os.Message msg) {
List<Info> list = (List<Info>) msg.obj;
for (Info i : list) {
System.out.println(i.toString());
}
};
};


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread() {//联网请求一定要放在子线程中
public void run() {
readXml();
};
}.start();


}


// pull解析方法
public void readXml() {

List<Info> list = null;
try {
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
InputStream is = conn.getInputStream();
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "UTF-8");// 设置数据源编码
int eventType = parser.getEventType();// 获取事件类型
Info info = null;


while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
// case XmlPullParser.START_DOCUMENT: // 开始读取XML文档
// // 实例化集合类
//
//
// break;
case XmlPullParser.START_TAG:// 开始读取某个标签
if ("android".equals(parser.getName())) {
list = new ArrayList<Info>();
info = new Info();
} else if ("versionCode".equals(parser.getName())) {
info.setVersionCode(Integer.parseInt(parser.nextText()));
} else if ("downloadUrl".equals(parser.getName())) {
info.setDownloadUrl(parser.nextText());
} else if ("updateLog".equals(parser.getName())) {
info.setUpdateLog(parser.nextText());
}
break;
case XmlPullParser.END_TAG:// 读完一个Person,可以将其添加到集合类中
if ("android".equals(parser.getName())) {
list.add(info);
System.out.println("333333333333");
info = null;
}
break;
}
eventType=parser.next();//这里一定要注意赋值给eventType,否则会出现死循环现象
}
Message msg = new Message();//将数据发送至Handler中处理
msg.obj = list;
h.sendMessage(msg);


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值