Xml之pull解析

来源:互联网 发布:截铃声软件 编辑:程序博客网 时间:2024/05/16 05:07
xml一共有三种解析放方法①DOM解析②SAX解析③Android内置的Pull解析第三种 解析 ③Android内置的Pull解析
  1. import java.io.InputStream;
  2. import java.net.HttpURLConnection;
  3. import java.net.URL;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import org.xmlpull.v1.XmlPullParser;
  7. import com.example.adapter.MyAdapter;
  8. import com.example.bean.News;
  9. import android.app.Activity;
  10. import android.content.Intent;
  11. import android.content.SharedPreferences;
  12. import android.content.res.XmlResourceParser;
  13. import android.os.Bundle;
  14. import android.os.Handler;
  15. import android.util.Log;
  16. import android.util.Xml;
  17. import android.view.View;
  18. import android.widget.AdapterView;
  19. import android.widget.AdapterView.OnItemClickListener;
  20. import android.widget.BaseAdapter;
  21. import android.widget.ListView;

  22. public class MainActivity extends Activity {
  23.     private ListView lv;
  24.     private List<News> list;
  25.     private BaseAdapter adapter;
  26.     Handler handler=new Handler(){
  27.         public void handleMessage(android.os.Message msg) {
  28.             handler.sendEmptyMessageDelayed(0, 1000);
  29.             adapter=new MyAdapter(MainActivity.this, list);
  30.             lv.setAdapter(adapter);
  31.             
  32.         };
  33.     };
  34.     @Override
  35.     protected void onCreate(Bundle savedInstanceState) {
  36.         super.onCreate(savedInstanceState);
  37.         setContentView(R.layout.activity_main);
  38.         lv = (ListView) findViewById(R.id.lv);
  39.         
  40.         
  41.         new Thread(){
  42.             public void run() {
  43.                 handler.sendEmptyMessageDelayed(0, 1000);
  44.                 show("http://www.sciencenet.cn/xml/iphoneinterface.aspx?type=news&nums=20");                
  45.             }
  46.             
  47.         }.start();
  48.         //点击条目跳转
  49.         lv.setOnItemClickListener(new OnItemClickListener() {
  50.             @Override
  51.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
  52.                 String link=list.get(arg2).getLink();
  53.               
  54.                 Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  55.                 intent.putExtra("link", link);
  56.                 startActivity(intent);
  57.                 
  58.             }
  59.         });
  60.         
  61.     }
  62.     //解析数据
  63.     private void show(String strUrl) {
  64.         try {
  65.             URL url=new URL(strUrl);
  66.             //创建连接
  67.             HttpURLConnection connection=(HttpURLConnection) url.openConnection();
  68.             connection.connect();
  69.             //获得响应码
  70.             int code = connection.getResponseCode();
  71.             if(code==200){
  72.                 InputStream is = connection.getInputStream();
  73.                 //pull解析
  74.                 XmlPullParser xmlParser=Xml.newPullParser();
  75.                 xmlParser.setInput(is, "UTF-8");
  76.                 News n=null;
  77.                 int eventType = xmlParser.getEventType();
  78.                 while(eventType!=XmlResourceParser.END_DOCUMENT){
  79.                     String tagName = xmlParser.getName();
  80.                     switch (eventType) {
  81.                     case XmlPullParser.START_DOCUMENT:
  82.                         list = new ArrayList<News>();                
  83.                         break;
  84.                     case XmlPullParser.START_TAG:
  85.                         //如果新闻标签的开始我们需要创建News对象
  86.                         if("item".equalsIgnoreCase(tagName)){
  87.                             n=new News();
  88.                         }else if("title".equals(tagName)){
  89.                             n.setTitle(xmlParser.nextText());
  90.                         }else if("link".equals(tagName)){
  91.                             n.setLink(xmlParser.nextText());
  92.                         }else if("imgs".equals(tagName)){
  93.                             n.setImgs(xmlParser.nextText());
  94.                         }else if("copyright".equals(tagName)){
  95.                             n.setCopyright(xmlParser.nextText());
  96.                         }else if("pubDate".equals(tagName)){
  97.                             n.setPubDate(xmlParser.nextText());
  98.                         }
  99.                         break;
  100.                     case XmlPullParser.END_TAG:
  101.                         if("item".equals(tagName)){
  102.                             list.add(n);
  103.                             Log.e("info", "++++++"+n);
  104.                             n=null;
  105.                         }
  106.                         break;
  107.                     case XmlPullParser.END_DOCUMENT:        
  108.                         break;
  109.                     }
  110.                     eventType=xmlParser.next();
  111.                 }
  112.             }
  113.         } catch (Exception e) {
  114.             e.printStackTrace();
  115.         }
  116.         
  117.     };
  118.    
0 0
原创粉丝点击