XMl解析

转载 2016年06月02日 08:05:30
package com.my.test2;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.my.test2.bean.Tweet;
import com.my.test2.utils.NetUtils;
import com.my.test2.view.XListView;
import com.my.test2.view.XListView.IXListViewListener;

public class MainActivity extends Activity implements IXListViewListener{

    private XmlPullParser parser;

    private List<Tweet> list=null;
    
    private XListView xlv;
    private int count=0;

    private MyAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list=new ArrayList<Tweet>();
        
        xlv = (XListView) findViewById(R.id.xlv);
        xlv.setPullLoadEnable(true);
        xlv.setPullRefreshEnable(true);
        
        
        getData(0);
        
        xlv.setXListViewListener(this);
        
        xlv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Intent intent=new Intent(MainActivity.this,DetailActivity.class);
                intent.putExtra("id", list.get(position).id);
                startActivity(intent);
                
            }
        });
        
    }

    private void getData(int pageIndex) {
        HttpUtils http = new HttpUtils();
        http.configCurrentHttpCacheExpiry(1000*5);
        http.send(HttpMethod.GET, NetUtils.PATH_LIST+pageIndex, new RequestCallBack<String>() {

        
            @Override
            public void onFailure(HttpException arg0, String arg1) {}

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                String result=arg0.result;
                
                parseXml(result);
                
                adapter = new MyAdapter();
                xlv.setAdapter(adapter);
        
            }

        });
    }
    
    private void parseXml(String result) {
        try {
            parser = Xml.newPullParser();
            ByteArrayInputStream bais=new ByteArrayInputStream(result.getBytes("utf-8"));
            parser.setInput(bais,"utf-8");
            int eventType = parser.getEventType();
            
            Tweet tweet=null;
            while (eventType!=XmlPullParser.END_DOCUMENT) {
                String name = parser.getName();
                switch (eventType) {
                case XmlPullParser.START_TAG:
                    
                    if("tweet".equals(name)){
                        tweet=new Tweet();
                    }else if("id".equals(name)){
                        tweet.id=parser.nextText();
                    }else if("portrait".equals(name)){
                        tweet.portrait=parser.nextText();
                    }else if("author".equals(name)){
                        tweet.author=parser.nextText();
                    }else if("body".equals(name)){
                        tweet.body=parser.nextText();
                    }else if("imgSmall".equals(name)){
                        tweet.imgSmall=parser.nextText();
                    }else if("imgBig".equals(name)){
                        tweet.imgBig=parser.nextText();
                    }else if("pubDate".equals(name)){
                        tweet.pubDate=parser.nextText();
                    }
                    
                    
                    break;
                case XmlPullParser.END_TAG:
                    if("tweet".equals(name)){
                        list.add(tweet);
                    }
                    break;
                    
                }
                eventType=parser.next();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    private void onLoad(){
        xlv.stopLoadMore();
        xlv.stopRefresh();
        xlv.setRefreshTime("ธีธี");
        
    }

    @Override
    public void onRefresh() {
        list.clear();
        HttpUtils http = new HttpUtils();
        http.configCurrentHttpCacheExpiry(1000*5);
        http.send(HttpMethod.GET, NetUtils.PATH_LIST+0, new RequestCallBack<String>() {

        
            @Override
            public void onFailure(HttpException arg0, String arg1) {}

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                String result=arg0.result;
                
                parseXml(result);
                
//                adapter = new MyAdapter();
//                xlv.setAdapter(adapter);
                
                adapter.notifyDataSetChanged();
                onLoad();
                count=0;
        
            }

        });
        
    }

    @Override
    public void onLoadMore() {
        HttpUtils http = new HttpUtils();
        http.configCurrentHttpCacheExpiry(1000*5);
        http.send(HttpMethod.GET, NetUtils.PATH_LIST+(++count), new RequestCallBack<String>() {

        
            @Override
            public void onFailure(HttpException arg0, String arg1) {}

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                String result=arg0.result;
                parseXml(result);
                adapter.notifyDataSetChanged();
                onLoad();
        
            }
        });
        
    }
    
    private class MyAdapter extends BaseAdapter{
        public MyAdapter() {
            
        }
        
        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder=null;
            if(convertView==null){
                holder=new ViewHolder();
                convertView=View.inflate(MainActivity.this, R.layout.xlv_item, null);
                
                holder.item_portrait=(ImageView) convertView.findViewById(R.id.item_portrait);
                holder.item_author=(TextView) convertView.findViewById(R.id.item_author);
                holder.item_title=(TextView) convertView.findViewById(R.id.item_title);
                holder.item_img=(ImageView) convertView.findViewById(R.id.item_img);
                
                convertView.setTag(holder);
            }else{
            holder=    (ViewHolder) convertView.getTag();
            }
            
            BitmapUtils utils = new BitmapUtils(MainActivity.this);
            utils.display(holder.item_portrait, list.get(position).portrait);
            holder.item_author.setText(list.get(position).author+"");
            holder.item_title.setText(list.get(position).body+"");
            if(list.get(position).imgSmall!=null){
                holder.item_img.setVisibility(View.VISIBLE);
                utils.display(holder.item_img, list.get(position).imgSmall);
                
            }else{
                holder.item_img.setVisibility(View.GONE);
            }
            
            return convertView;
        }
        
    }
    
    static class ViewHolder{
        private ImageView item_portrait;
        private TextView item_title;
        private TextView item_author;
        private ImageView item_img;
    }
}

相关文章推荐

json xml 解析demo

  • 2017-09-14 18:15
  • 1.47MB
  • 下载

解析XML工具类

  • 2017-08-22 21:32
  • 307KB
  • 下载

retrofit2用simplexml解析xml

现在手上的项目后台返回的是XML字符串,用惯了JSON + GSON的我第一考虑的就是自动化解析,那么多接口,那么多属性,用DOM或者萨克斯解析太浪费时间了,而且扩展性也不好。网上的关于retrofi...

Java SAX解析Xml文档Demo

  • 2017-08-18 14:12
  • 13KB
  • 下载

Sax解析Xml文档

SAX(simpleAPIforXML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。 在用Sax解析xml文档的时候不要忽略节点之...

Android中解析XML

  • 2017-05-26 08:49
  • 1.66MB
  • 下载

解析xml文件

Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

【目录】 一、【基础知识——扫盲】 二、【DOM、SAX、JDOM、DOM4j简单使用介绍】 三、【性能测试】 四、【对比】 五、【小插曲XPath】 六、【补充】 关键字:Java...

Simple工具包解析XML文件

  • 2015-09-03 11:40
  • 2.09MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)