Android学习第十五天----pull解析

pull解析在android中是一个很重要的解析xml工具,相对其dom还有sax,这个的重要性是不言而喻的。

pull解析可以这样用,在res资源目录中创建raw目录,然后在里面创建一个文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <books>
 3        <book id='1'>
 4         <name>java精通11</name>
 5         <price>35.4</price>    
 6     </book>
 7     <book id='2'>
 8         <name>php精通22</name>
 9         <price>97</price>
10     </book>
11     <book id='3'>
12         <name>oracle管理33</name>
13         <price>47.5</price>
14     </book>
15 </books>

MVC模式,创建一个实体类的

package cn.core.entity;

public class Books {
    private Integer bookId;
    private String bookName;
    private float bookPrice;
        
    public Integer getBookId() {
        return bookId;
    }
    public void setBookId(Integer bookId) {
        this.bookId = bookId;
    }
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public float getBookPrice() {
        return bookPrice;
    }
    public void setBookPrice(float bookPrice) {
        this.bookPrice = bookPrice;
    }
    
}

然后是控制层的代码:

package cn.core.service;

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 android.util.Xml;
import cn.core.entity.Books;

public class FileService {

    public static List<Books> getPrase(InputStream is) {
        List<Books> data = null;
        Books book = null;
        XmlPullParser xpp = Xml.newPullParser();
        try {
            xpp.setInput(is, "utf-8");
            int eventType = xpp.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                switch (eventType) {

                    case XmlPullParser.START_DOCUMENT :
                        data = new ArrayList<Books>();
                        break;

                    case XmlPullParser.START_TAG :
                        if ("book".equals(xpp.getName())) {
                            book = new Books();
                            book.setBookId(Integer.parseInt(xpp
                                    .getAttributeValue(0)));
                        }
                        if ("name".equals(xpp.getName())) {
                            book.setBookName(xpp.nextText());
                        }
                        if ("price".equals(xpp.getName())) {
                            book.setBookPrice(Float.parseFloat((xpp.nextText())));
                        }
                        break;

                    case XmlPullParser.END_TAG :
                        if ("book".equals(xpp.getName())) {
                            data.add(book);
                            book = null;
                        }

                        break;
                }
                eventType = xpp.next();
            }

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return data;
    }
}

然后activity中

package cn.core.test;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import cn.core.entity.Books;
import cn.core.service.FileService;

public class MainActivity extends Activity {
    private List<String> mdata = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        InputStream is = getResources().openRawResource(R.raw.books);

        mdata = new ArrayList<String>();

        List<Books> list = FileService.getPrase(is);

        for (Books book : list) {
            mdata.add(book.getBookId() + "---" + book.getBookName() + "--"
                    + book.getBookPrice());
        }

        ListView listView = (ListView) findViewById(R.id.listView1);
        listView.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, mdata));

    }
}

 

posted @ 2013-03-25 22:48  小三小山  阅读(181)  评论(0编辑  收藏  举报