package com.pt.http01; import android.os.Handler; import android.widget.TextView; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * Created by 韬 on 2016-05-14. */ public class XmlThread extends Thread{ private String url; private Handler handler; private TextView tv_result; public XmlThread(String url, Handler handler, TextView tv_result) { this.url = url; this.handler = handler; this.tv_result = tv_result; } @Override public void run() { try { //连接,并且得到XML文件的输入流 URL connurl = new URL(url); HttpURLConnection conn = (HttpURLConnection) connurl.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(5000); InputStream in = conn.getInputStream(); //得到Pull解析器 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(in,"UTF-8"); //创建存储XML的集合 final List<People> peoples = new ArrayList<>(); //得到标签的类型 int eventType = parser.getEventType(); People people = null; while(eventType != XmlPullParser.END_DOCUMENT){ //得到标签的名字 String data = parser.getName(); switch (eventType){ case XmlPullParser.START_TAG: //people开始标签创建实例 if("people".equals(data)){ people = new People(); } //属性name标签给实例设置属性 if("name".equals(data)){ people.setName(parser.nextText()); } if("age".equals(data)){ people.setAge(Integer.parseInt(parser.nextText())); } if("school".equals(data)){ people.setSchool(parser.nextText()); } break; case XmlPullParser.END_TAG: //当为people字符串结束标签时,将实例添加进入集合 if("people".equals(data) && people != null){ peoples.add(people); } break; } //手动的调用时间处理的方法 eventType = parser.next(); } handler.post(new Runnable() { @Override public void run() { tv_result.setText(peoples.toString()); } }); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } } }
Android中的Http通信之xml文件解析
猜你喜欢
转载自270827204.iteye.com/blog/2298257
今日推荐
周排行