zoukankan      html  css  js  c++  java
  • XMl的解析

    MainActivity
    package com.example.secondweek_test2; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import com.example.utils.NetWorkUtil; import android.os.AsyncTask; import android.os.Bundle; import android.app.Activity; import android.util.Xml; import android.view.Menu; public class MainActivity extends Activity { private static final String ENDURL="http://10.1.2.175:8080/Day05_UrlCon/data.xml"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化数据 init(); } private void init() { /** * 请求服务器中xml文件 */ //判断网络是否开通 if(NetWorkUtil.isAvailbale(MainActivity.this))//开通网络了 { //请求网络数据 new MyAsyncTask().execute(ENDURL); } } class MyAsyncTask extends AsyncTask<String, Integer, InputStream>{ private List<Foods> list; private String tag; private Foods f; //耗时操作 @Override protected InputStream doInBackground(String... params) { //向服务器请求数据 String url=params[0]; InputStream byClient = NetWorkUtil.getDataByClient(url); System.out.println(byClient); return byClient; } //更新UI @Override protected void onPostExecute(InputStream result) { parserXml(result); System.out.println(list.toString()); super.onPostExecute(result); } private void parserXml(InputStream result) { //解析请求的数据 XmlPullParser parser=Xml.newPullParser();//获取解析器 try { parser.setInput(result, "utf-8"); // 触发第一次事件 int type = parser.getEventType(); // 循环遍历 while (type != XmlPullParser.END_DOCUMENT)// 筛选的条件是不为结束文档 { // 判断类型 switch (type) { case XmlPullParser.START_DOCUMENT://开始文档 //创建集合对象 list = new ArrayList<Foods>(); break; case XmlPullParser.START_TAG://开始标签 //记录标签的名字 tag = parser.getName(); //判断是否为person if(tag.equals("cate")) { //创建对象 f = new Foods(); //获取属性值 String id = parser.getAttributeValue(0); System.out.println(id); //为person对象赋值 f.setId(Integer.parseInt(id)); } break; case XmlPullParser.TEXT://文本标签 //获取文本标签的值 String text=parser.getText(); //判断文本标签是什么 if(tag.equals("cateurl")) { f.setCateurl(text); }else if(tag.equals("catetitle")){ f.setCatetitle(text); }else if(tag.equals("catecontent")){ f.setCatecontent(text); }else if(tag.equals("cateprice")){ f.setCateprice(text); } break; case XmlPullParser.END_TAG://结束标签 //记录结束标签的名字 tag=parser.getName(); //判断标签是扫描 if(tag.equals("cate")) { //向集合中添加对象 list.add(f); //将person对象制空 f=null; } tag=""; break; case XmlPullParser.END_DOCUMENT://结束文档 break; } type=parser.next();//触发下一次事件 } } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

      

    网络请求
    package com.example.utils;
    
    import java.io.BufferedInputStream;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.params.BasicHttpParams;
    import org.apache.http.params.HttpConnectionParams;
    import org.apache.http.params.HttpParams;
    import org.apache.http.util.EntityUtils;
    
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    
    public class NetWorkUtil {
    /*
    	private static BufferedInputStream is;*/
    	static InputStream is;
    
    	public static boolean isAvailbale(Context context) {
    		// 获取网络的服务器
    		ConnectivityManager manager = (ConnectivityManager) context
    				.getSystemService(Context.CONNECTIVITY_SERVICE);
    
    		// 获取网络信息
    		NetworkInfo info = manager.getActiveNetworkInfo();
    
    		if (info == null || !info.isAvailable()) {
    			return false;
    		}
    
    		return true;
    
    	}
    
    	public static InputStream getDataByClient(String url) {
    		// 获取get请求对象
    		HttpGet get = new HttpGet(url);
    		 
    
    		// 设置参数
    		HttpParams params = new BasicHttpParams();
    		HttpConnectionParams.setConnectionTimeout(params, 5000);
    		HttpConnectionParams.setSoTimeout(params, 5000);
    
    		// 获取执行请求的对象
    		HttpClient client = new DefaultHttpClient(params);
    
    		// 执行请求
    		try {
    			HttpResponse resp = client.execute(get);
    
    			// 判断响应是否成功
    			if (resp.getStatusLine().getStatusCode() == 200) {
    				// 获取响应的数据
    				HttpEntity entity = resp.getEntity();
    				
    				is= entity.getContent();
    				/*is = new BufferedInputStream(
    						new DataInputStream());*/
    
    			}
    		} catch (ClientProtocolException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return is;
    	}
    
    }
    

      

  • 相关阅读:
    bzoj3505 数三角形 组合计数
    cogs2057 殉国 扩展欧几里得
    cogs333 荒岛野人 扩展欧几里得
    bzoj1123 BLO tarjan求点双连通分量
    poj3352 road construction tarjan求双连通分量
    cogs1804 联合权值 dp
    cogs2478 简单的最近公共祖先 树形dp
    cogs1493 递推关系 矩阵
    cogs2557 天天爱跑步 LCA
    hdu4738 Caocao's Bridge Tarjan求割边
  • 原文地址:https://www.cnblogs.com/jsonfan/p/5326596.html
Copyright © 2011-2022 走看看