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