Xstream解析XML文件

private class GetDataTask extends AsyncTask<Void, Void, List<User>> {
        @Override
        protected List<User> doInBackground(Void... params) {
            i++;
            List<User> list=null;
            XStream xStream = new XStream();
            xStream.processAnnotations(Userss.class);
            try {
                Userss fromXML = (Userss) xStream.fromXML(new URL(uri));
                list = fromXML.getNewslist().getNews();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            return list;
        }       
        @Override
        protected void onPostExecute(List<User> result) {
            adapter=new MyAdapter(getActivity(),result);//这个地方需要添加参数
            actualListView.setAdapter(adapter);
            adapter.notifyDataSetChanged();
            mPullRefreshListView.onRefreshComplete();
            super.onPostExecute(result);
        }
    }

对于XML的解析 我们需要封装javabean 还需要添加注解下面我们写一个例子还看一下
这个是最里层的封装

public class User {
    private String id;
    private String title;
    private String body;
    private int commentCount;//评论的数量
    private String author;//作者
    private int authorid;
    private String pubDate;
    private String url;
    private Us newstype;
    //对属性进行封装
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getBody() {
        return body;
    }
    public void setBody(String body) {
        this.body = body;
    }
    public int getCommentCount() {
        return commentCount;
    }
    public void setCommentCount(int commentCount) {
        this.commentCount = commentCount;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public int getAuthorid() {
        return authorid;
    }
    public void setAuthorid(int authorid) {
        this.authorid = authorid;
    }
    public String getPubDate() {
        return pubDate;
    }
    public void setPubDate(String pubDate) {
        this.pubDate = pubDate;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public Us getNewstype() {
        return newstype;
    }
    public void setNewstype(Us newstype) {
        this.newstype = newstype;
    }
}

让我们看一下次外层的集合的封装 这个时候我们需要添加注解

import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias("newslist")//这个地方添加的名称不是固定的   这个是集合标签外面一层的标签
public class Users {
    @XStreamImplicit(itemFieldName="news")//这个地方是我们呢集合的标签名称
    private List<User> news;

    public List<User> getNews() {
        return news;
    }

    public void setNews(List<User> news) {
        this.news = news;
    }
}

//最后让我们看一下最外层的对象的封装 我们还是需要添加一个注解

import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("oschina")//这个地方的名字也不是固定的   是根据我们的XML文件配合的最外层的标签名称
public class Userss {
    private String catalog;
    private String newsCount;
    private String pagesize;
    private Users newslist;

    public String getCatalog() {
        return catalog;
    }
    public void setCatalog(String catalog) {
        this.catalog = catalog;
    }
    public String getNewsCount() {
        return newsCount;
    }
    public void setNewsCount(String newsCount) {
        this.newsCount = newsCount;
    }
    public String getPagesize() {
        return pagesize;
    }
    public void setPagesize(String pagesize) {
        this.pagesize = pagesize;
    }
    public Users getNewslist() {
        return newslist;
    }
    public void setNewslist(Users newslist) {
        this.newslist = newslist;
    }
    @Override
    public String toString() {
        return "Userss [catalog=" + catalog + ", newsCount=" + newsCount
                + ", pagesize=" + pagesize + ", newslist=" + newslist + "]";
    }

}

上面这样就完成了我们Javabean的封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值