Android中解析XML

Java文件:

MainActivity:

package com.sdut.testadapter;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {

	ProgressDialog progressDialog;
	ListView listView;
	Button button;
	Button buttonJson,btnDown;
	Handler handler;
	ArrayList<HashMap<String, String>> listData;
	String[] data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        
        setContentView(R.layout.activity_main);
        initView();
        data=getArrayData();
        listData=getListData();
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
        String[] fromKey={"xh","xm"};
        int[] toID={R.id.txtXh,R.id.txtXm};
        SimpleAdapter adapter2=new SimpleAdapter(this, listData, R.layout.listdata_layout,fromKey,toID);
        MyBaseAdapter adapter3=new MyBaseAdapter(this, listData);
        listView.setAdapter(adapter3);
        
        handler=new Handler(){
        	@Override
        	public void handleMessage(Message msg) {
        		// 接收线程传回来的Message
        		switch (msg.what) {
				case 1:
					progressDialog.dismiss();
					Bundle bundle=msg.getData();
					String str=bundle.getString("version");
					VersionEntity entity=Tools.VersionJson(str);
					Toast.makeText(getApplicationContext(), "发现新版本:"+entity.getVerMem(), 1).show();
					break;

				default:
					break;
				}
        		super.handleMessage(msg);
        	}
        };
        
        button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				progressDialog.show();
				//开始执行查询  XUtils.jar
				HttpUtils httpUtils=new HttpUtils();
				String url="http://ws.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getStationAndTimeByStationName";
				RequestParams params=new RequestParams();
				params.addBodyParameter("StartStation", "淄博");
				params.addBodyParameter("ArriveStation", "威海");
				params.addBodyParameter("UserID", "");
				params.addBodyParameter("Content-Type", "application/x-www-form-urlencoded");
				
				httpUtils.send(HttpMethod.POST, url, params, new RequestCallBack<String>() {

					@Override
					public void onFailure(HttpException arg0, String arg1) {
						//网络连接失败
						progressDialog.dismiss();
						Toast.makeText(MainActivity.this, "网络错误", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onSuccess(ResponseInfo<String> response) {
						progressDialog.dismiss();
						String reuslt=response.result;
						Log.d("result", reuslt);
						ArrayList<HashMap<String, String>> list=Tools.pullTrainTimeTable(reuslt);
						Log.d("listsize", ""+list.size());
						String[] fromKey={"TrainCode","FirstStation","LastStation","StartStation","StartTime","ArriveStation","ArriveTime"};
						int[] toID={R.id.txtTrainCode,R.id.txtFirstStation,R.id.txtLastStation,R.id.txtStartStation,R.id.txtStartTime,R.id.txtArriveStation,R.id.txtArriveTime};
						SimpleAdapter adapter=new SimpleAdapter(MainActivity.this, list, R.layout.trainitem_layout, fromKey, toID);
						listView.setAdapter(adapter);
						Toast.makeText(MainActivity.this, "车次数量:"+list.size(), Toast.LENGTH_LONG).show();
						
					}
				});
				
			}
		});
        
        buttonJson.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				progressDialog.show();
				GetJsonVersion getJsonVersion=new GetJsonVersion();
				getJsonVersion.start();
				
//				String s="{VersionName:V2.0,VersionCode:10,VersionMem:本次升级优化了系统性能.2017-9-4,ApkUrl:sjws.apk}";
//				VersionEntity entity=Tools.VersionJson(s);
//				Toast.makeText(getApplicationContext(), "有新版本:"+entity.getVerMem(), 1).show();
			}
		});
        btnDown.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				HttpUtils httpUtils=new HttpUtils();
				String url="http://210.44.176.42/kaoshi/apkupdate/sjws.apk";
				String saveTo=Environment.getExternalStorageDirectory().getAbsolutePath()+"//sjws.apk";
				httpUtils.download(url, saveTo, new RequestCallBack<File>() {
					@Override
					public void onSuccess(ResponseInfo<File> response) {
						// 下载成功
						File file= response.result;
						Toast.makeText(getApplicationContext(), file.getAbsolutePath(), 1).show();
					}
					@Override
					public void onLoading(long total, long current,
							boolean isUploading) {
						// 下载过程中...
						
						super.onLoading(total, current, isUploading);
					}
					@Override
					public void onFailure(HttpException arg0, String arg1) {
						//网络错误
						
					}
				});
				
			}
		});
        
//        String xmlStr="<root><VersionCode>20</VersionCode><ApkUrl>sjws.apk</ApkUrl><VersionMem>增加了在线更新功能</VersionMem><VersionName>Ver1.2</VersionName></root>";
//        HashMap<String, String> map= Tools.pullVersionXml(xmlStr);
//        Toast.makeText(this, map.get("VersionCode")+map.get("VersionMem"), 1).show();
        
        
    }
    protected void initView() {
    	progressDialog=new ProgressDialog(this);
    	progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    	progressDialog.setTitle("正在读取");
    	progressDialog.setMessage("请稍等...");
    	progressDialog.setCancelable(false);
    	
    	button=(Button) findViewById(R.id.btnSearch);
    	btnDown=(Button) findViewById(R.id.btnDown);
    	buttonJson=(Button) findViewById(R.id.btnJson);
		listView=(ListView) findViewById(R.id.myList);
	}
    protected ArrayList<HashMap<String, String>> getListData() {
		ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>();
		for(int i=0;i<20;i++){
			HashMap<String, String> map=new HashMap<String, String>();
			map.put("xh", "xh--"+i);
			map.put("xm", "xm--"+i);
			list.add(map);			
		}
    	return list;
	}
    protected String[] getArrayData() {
		String[] data=new String[20];
		for(int i=0;i<data.length;i++){
			data[i]="data"+i;
		}
		return data;
	}

    class GetJsonVersion extends Thread{
    	
    	@Override
    	public void run() {
    		String str="http://210.44.176.42/kaoshi/apkupdate/updatejson.html";
    		try {
				URL url=new URL(str);
			 	InputStream in= url.openStream();
//			 	Environment.getExternalStorageDirectory();
			 	BufferedReader br=new BufferedReader(new InputStreamReader(in));
			 	String result="";
			 	String tmpS=br.readLine();
			 	while(tmpS!=null){
			 		result=result+tmpS;
			 		tmpS=br.readLine();
			 	}
			 	Bundle data=new Bundle();
			 	data.putString("version", result);
			 	Message msg=new Message();
			 	msg.what=1;
			 	msg.setData(data);
			 	handler.sendMessage(msg);
				
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    		super.run();
    	}
    }
    
}

MyBaseAdapter:

package com.sdut.testadapter;

import java.util.ArrayList;
import java.util.HashMap;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyBaseAdapter extends BaseAdapter{

	ArrayList<HashMap<String, String>> list;
	Context context;
	
	public MyBaseAdapter(Context context,ArrayList<HashMap<String, String>> list){
		this.context=context;
		this.list=list;
	}
	
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return list.size();
	}

	@Override
	public Object getItem(int pos) {
		// TODO Auto-generated method stub
		return list.get(pos);
	}

	@Override
	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public View getView(int pos, View view, ViewGroup arg2) {
		// TODO Auto-generated method stub
		HashMap<String, String> map=list.get(pos);
		ViewHolder holder;
		if(view==null){
			holder=new ViewHolder();
			view=LayoutInflater.from(context).inflate(R.layout.listdata_layout,null);
			holder.txtxh=(TextView) view.findViewById(R.id.txtXh);
			holder.txtxm=(TextView) view.findViewById(R.id.txtXm);
			view.setTag(holder);
		}else{
			holder=(ViewHolder) view.getTag();
		}
		holder.txtxh.setText("MyBaseAdapter"+map.get("xh"));
		holder.txtxm.setText(map.get("xm"));
		
		return view;
	}
	
	static class ViewHolder{
		TextView txtxh;
		TextView txtxm;
	}

}

MyPagerAdapter:


package com.sdut.testadapter;

import java.util.ArrayList;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;

public class MyPagerAdapter extends PagerAdapter {
	ArrayList<View> arrayList=new ArrayList<View>();
	public MyPagerAdapter(ArrayList<View> arrayList){
		this.arrayList=arrayList;
	}
	
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return arrayList.size();
	}
	
	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		// TODO Auto-generated method stub
		return arg0==arg1;
	}

	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		// TODO Auto-generated method stub
		container.removeView(arrayList.get(position));
//		super.destroyItem(container, position, object);
	}
	@Override
	public Object instantiateItem(ViewGroup container, int position) {
		// TODO Auto-generated method stub
		container.addView(arrayList.get(position));
		return arrayList.get(position);
//		return super.instantiateItem(container, position);
	}

}
Tools:

package com.sdut.testadapter;

import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.util.Log;
import android.util.Xml;

public class Tools {
//{VersionName:V2.0,VersionCode:10,VersionMem:本次升级优化了系统性能.2017-9-4,ApkUrl:sjws.apk}
	
	public static ArrayList<HashMap<String, String>> StuJson(String str) {
		ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>();
		HashMap<String, String> map=new HashMap<String, String>();
		try {
			JSONArray jsonArray=new JSONArray(str);
			for(int i=0;i<jsonArray.length();i++){
				JSONObject obj=jsonArray.getJSONObject(i);
				map=new HashMap<String, String>();
				map.put("xm", obj.getString("xm"));
				map.put("bj", obj.getString("bj"));
				list.add(map);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}
	
	public static VersionEntity VersionJson(String str) {
		VersionEntity entity=new VersionEntity();
		try {
			JSONObject jsonObject=new JSONObject(str);
			String name=jsonObject.getString("VersionName");
			String code=jsonObject.getString("VersionCode");
			String mem=jsonObject.getString("VersionMem");
			String apkurl=jsonObject.getString("ApkUrl");
			entity.setVerName(name);
			entity.setVerCode(code);
			entity.setVerMem(mem);
			entity.setVerUrl(apkurl);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return entity;
	}
	
	public static ArrayList<HashMap<String, String>> pullTrainTimeTable(String str) {
		ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>();
		HashMap<String, String> map=new HashMap<String, String>();
		XmlPullParser parser=Xml.newPullParser();
		ByteArrayInputStream in=new ByteArrayInputStream(str.getBytes());
		try {
			parser.setInput(in,null);
			int eventType=parser.getEventType();
			while(eventType!=XmlPullParser.END_DOCUMENT){
				if(eventType==XmlPullParser.START_TAG){
					String tagname=parser.getName();
					Log.d("tagName", tagname);
					if(tagname.equals("TimeTable")){
						map=new HashMap<String, String>();
					}
					if(tagname.equals("TrainCode")){
						map.put("TrainCode", parser.nextText());
					}
					if(tagname.equals("FirstStation")){
						map.put("FirstStation", parser.nextText());
					}
					if(tagname.equals("LastStation")){
						map.put("LastStation", parser.nextText());
					}
					if(tagname.equals("StartStation")){
						map.put("StartStation", parser.nextText());
					}
					if(tagname.equals("StartTime")){
						map.put("StartTime", parser.nextText());
					}
					if(tagname.equals("ArriveTime")){
						map.put("ArriveTime", parser.nextText());
					}
					if(tagname.equals("ArriveStation")){
						map.put("ArriveStation", parser.nextText());
					}
				}
				if(eventType==XmlPullParser.END_TAG){
					if(parser.getName().equals("TimeTable")){
						list.add(map);
					}
				}
				eventType=parser.next();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}
	
	
//	<root>
//	  <VersionCode>20</VersionCode> 
//	  <VersionMem>增加了在线更新功能</VersionMem> 
//	  <VersionName>Ver1.2</VersionName> 
//	  <ApkUrl>sjws.apk</ApkUrl> 
//	  </root>
	public static HashMap<String, String> pullVersionXml(String str) {
		HashMap<String, String> map=new HashMap<String, String>();
		ByteArrayInputStream in=new ByteArrayInputStream(str.getBytes());
		XmlPullParser parser=Xml.newPullParser();
		try {
			parser.setInput(in, null);
			int eventType= parser.getEventType();
			while(eventType!=XmlPullParser.END_DOCUMENT){
				if(eventType==XmlPullParser.START_TAG){
					String tagName=parser.getName();
					if(tagName.equals("VersionCode")){
						map.put("VersionCode", parser.nextText());
					}
					if(tagName.equals("VersionMem")){
						map.put("VersionMem", parser.nextText());
					}
					if(tagName.equals("VersionName")){
						map.put("VersionName", parser.nextText());
					}
					if(tagName.equals("ApkUrl")){
						map.put("ApkUrl", parser.nextText());
					}
				}
				parser.next();
				eventType= parser.getEventType();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return map;
	}
}





VersionEntity:

package com.sdut.testadapter;

public class VersionEntity {

	private String verName;
	private String verCode;
	private String verMem;
	private String verUrl;
	public String getVerName() {
		return verName;
	}
	public void setVerName(String verName) {
		this.verName = verName;
	}
	public String getVerCode() {
		return verCode;
	}
	public void setVerCode(String verCode) {
		this.verCode = verCode;
	}
	public String getVerMem() {
		return verMem;
	}
	public void setVerMem(String verMem) {
		this.verMem = verMem;
	}
	public String getVerUrl() {
		return verUrl;
	}
	public void setVerUrl(String verUrl) {
		this.verUrl = verUrl;
	}
	
	
}

ViewFlipperActivity:

package com.sdut.testadapter;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class ViewFlipperActivity extends Activity{

	ViewPager viewPager;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		setContentView(R.layout.myflipper_layout);
		viewPager=(ViewPager) findViewById(R.id.viewpager);
		
//		FragmentActivity
//		FragmentPagerAdapter
		
		View view=LayoutInflater.from(this).inflate(R.layout.activity_main, null);
		TextView textView=new TextView(this);
		textView.setText("看看第一个");
		Button button=new Button(this);
		button.setText("这是第二个");
		ArrayList<View> arrayList=new ArrayList<View>();
		arrayList.add(button);
		arrayList.add(textView);
		arrayList.add(view);
		
		MyPagerAdapter adapter=new MyPagerAdapter(arrayList);
		viewPager.setAdapter(adapter);
		
		Toast.makeText(this,""+viewPager.getChildCount(),1).show();
		super.onCreate(savedInstanceState);
	}

}

布局文件:

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
	android:orientation="vertical" >
	<ViewFlipper 
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:autoStart="true"
        android:flipInterval="2000">
        <ImageView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/a"/>
        <ImageView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/b"/>
        <ImageView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/c"/>
    </ViewFlipper>
    <TextView
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:text="@string/hello_world" />
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        
    
    <Button 
        android:id="@+id/btnSearch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/btnSeartchTxt"/>
    <Button 
        android:id="@+id/btnJson"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/btnJsonTxt"/>
    <Button 
        android:id="@+id/btnDown"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/btnDownTxt"/>
    </LinearLayout>
    <ListView 
        android:id="@+id/myList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:entries="@array/mingdan"></ListView>
    
    

</LinearLayout>

listdata_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <TextView 
        android:id="@+id/txtXh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <View 
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"/>
    
    <TextView 
        android:id="@+id/txtXm"
        android:background="@color/hongse"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

myflipper_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"/>
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="200dp">
        
    </android.support.v4.view.ViewPager>

</LinearLayout>

trainitem_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView 
            android:id="@+id/txtTrainCode"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/txtFirstStation"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/txtLastStation"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView 
            android:id="@+id/txtStartStation"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/txtStartTime"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/txtArriveStation"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/txtArriveTime"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    

</LinearLayout>

array.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="mingdan">
    <item >qasdasdads</item>
    <item >fghdfg</item>
    <item >dfgdfgd</item>
    <item >sdf</item>
    <item >sdrt3453</item>
</string-array>    
</resources>

注:权限设置AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
	<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>    
    <uses-permission  android:name="android.permission.INTERNET"/>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值