packagecom.example.day0328_xmlparse;importandroid.os.Bundle;importandroid.app.Activity;importandroid.widget.ListView;public class MainActivity extendsActivity {private String url = "http://10.16.154.26:8080/Web_Product/CityServlet?type=xml";privateListView listView;
@Overrideprotected voidonCreate(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);
}
}packagecom.example.day0328_xmlparse;importjava.util.List;importandroid.content.Context;importandroid.os.AsyncTask;importandroid.util.Log;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ListView;importandroid.widget.TextView;public class MyTask extends AsyncTask>{privateContext context;privateListView listView;publicMyTask(Context context,ListView listView){this.context =context;this.listView =listView;
}
@Overrideprotected voidonPreExecute() {//TODO Auto-generated method stub
super.onPreExecute();
}
@Overrideprotected ListdoInBackground(String... params) {//TODO Auto-generated method stub
String url =params[0];
String xmlStr=HttpUtils.httpXmlStr(url);
List citys =XmlUtils.parseXmlStr(xmlStr);for(String c: citys){
Log.i("aa", c+"");
}returncitys;
}
@Overrideprotected void onPostExecute(final Listresult) {//TODO Auto-generated method stub
listView.setAdapter(newBaseAdapter() {
@Overridepublic View getView(intposition, 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= newViewHolder();
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);returnview;
}
@Overridepublic long getItemId(intposition) {//TODO Auto-generated method stub
return 0;
}
@Overridepublic Object getItem(intposition) {//TODO Auto-generated method stub
return null;
}
@Overridepublic intgetCount() {//TODO Auto-generated method stub
returnresult.size();
}classViewHolder{publicTextView textView;
}
});super.onPostExecute(result);
}
}packagecom.example.day0328_xmlparse;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.client.HttpClient;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.impl.client.DefaultHttpClient;public classHttpUtils {public staticString httpXmlStr(String url){//拿到客户端对象
HttpClient client = newDefaultHttpClient();//获取请求方式
HttpGet get = newHttpGet(url);try{
HttpResponse httpResponse=client.execute(get);if (httpResponse.getStatusLine().getStatusCode()==200) {
HttpEntity entity=httpResponse.getEntity();
InputStream is=entity.getContent();
ByteArrayOutputStream baos= newByteArrayOutputStream();byte[] bys = new byte[1024];int len = 0;while((len = is.read(bys))!=-1){
baos.write(bys,0, len);
}returnbaos.toString();
}
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}return null;
}
}packagecom.example.day0328_xmlparse;importjava.io.Reader;importjava.io.StringReader;importjava.util.ArrayList;importjava.util.List;importorg.xmlpull.v1.XmlPullParser;importorg.xmlpull.v1.XmlPullParserFactory;public classXmlUtils {//解析XML字符串
public static ListparseXmlStr(String xmlStr){//XmlPullParser xp = Xml.newPullParser();
try{
List list = new ArrayList();
XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
XmlPullParser xp=factory.newPullParser();//把字符串转换成字符输入流reader
Reader in = newStringReader(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();
}returnlist;
}catch(Exception e) {
e.printStackTrace();
}return null;
}
}