package com.example.day0328_xmlparse; import android.os.Bundle; import android.app.Activity; import android.widget.ListView; public class MainActivity extends Activity { private String url = "http://10.16.154.26:8080/Web_Product/CityServlet?type=xml"; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.lv); MyTask myTask = new MyTask(MainActivity.this,listView); myTask.execute(url); } } package com.example.day0328_xmlparse; import java.util.List; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; public class MyTask extends AsyncTask<String, Void, List<String>> { private Context context; private ListView listView; public MyTask(Context context,ListView listView){ this.context = context; this.listView = listView; } @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); } @Override protected List<String> doInBackground(String... params) { // TODO Auto-generated method stub String url =params[0]; String xmlStr = HttpUtils.httpXmlStr(url); List<String> citys = XmlUtils.parseXmlStr(xmlStr); for(String c: citys){ Log.i("aa", c+""); } return citys; } @Override protected void onPostExecute(final List<String> result) { // TODO Auto-generated method stub listView.setAdapter(new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view=null; ViewHolder holder; if(convertView==null){ view = LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_1, null); holder = new ViewHolder(); holder.textView =(TextView) view.findViewById(android.R.id.text1); view.setTag(holder); }else{ view = convertView; holder = (ViewHolder) view.getTag(); } String text = result.get(position); holder.textView.setText(text); return view; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public int getCount() { // TODO Auto-generated method stub return result.size(); } class ViewHolder{ public TextView textView; } }); super.onPostExecute(result); } } package com.example.day0328_xmlparse; import java.io.ByteArrayOutputStream; import java.io.InputStream; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; public class HttpUtils { public static String httpXmlStr(String url){ //拿到客户端对象 HttpClient client = new DefaultHttpClient(); //获取请求方式 HttpGet get = new HttpGet(url); try { HttpResponse httpResponse = client.execute(get); if (httpResponse.getStatusLine().getStatusCode()==200) { HttpEntity entity= httpResponse.getEntity(); InputStream is = entity.getContent(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] bys = new byte[1024]; int len = 0; while((len = is.read(bys))!=-1){ baos.write(bys, 0, len); } return baos.toString(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } } package com.example.day0328_xmlparse; import java.io.Reader; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; public class XmlUtils { //解析XML字符串 public static List<String> parseXmlStr(String xmlStr){ //XmlPullParser xp = Xml.newPullParser(); try { List<String> list = new ArrayList<String>(); XmlPullParserFactory factory =XmlPullParserFactory.newInstance(); XmlPullParser xp = factory.newPullParser(); //把字符串转换成字符输入流reader Reader in = new StringReader(xmlStr); //告诉解析器对象Xml在哪,初始化 xp.setInput(in); //获取当前节点的时间类型 int type = xp.getEventType(); //定义一个开关 boolean flag =false; while(true){ if (type ==XmlPullParser.START_DOCUMENT) { }else if(type==XmlPullParser.END_DOCUMENT){ break; }else if(type==XmlPullParser.START_TAG){ if("name".equals(xp.getName())){ flag=true; } }else if(type == XmlPullParser.END_TAG){ flag =false; }else if(type == XmlPullParser.TEXT){ String text =xp.getText(); if(flag){ list.add(text); } } /*xp.next(); type = xp.getEventType();*/ type = xp.next(); } return list; } catch (Exception e) { e.printStackTrace(); } return null; } }