PULL解析

Pull解析XML文件

Pull是Android内置的xml解析器。Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如:开始元素和结束元素的事件,使用paser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以用一个switch对相应事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值

步骤

1.创建Pull解析器工厂对象
2.通过解析器工厂对象获取Pull解析器
3.设置解析器的读取文件的路径及解析的编码方式
4.获取一个事件

解析cat.xml案例代码

package work01;

import java.awt.print.Book;
import java.io.FileInputStream;
import java.util.ArrayList;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;



public class PullWork01 {
    public static void main(String[] args) throws Exception{

        //1.创建pull解析器工厂类
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

        //2.创建pull解析器对象
        XmlPullParser parser = factory.newPullParser();

        //3.设置读取的文件,及读取的编码方式
        parser.setInput(new FileInputStream("xml\\cat.xml"),"utf-8");

        //4.获取第一个事件的状态
        int type = parser.getEventType();

        Cat cat = null;
        String currentTagName;//当前的标签名字
        ArrayList<Cat> list =new ArrayList<Cat>();

        //while判断当没有到文件为  执行,  XmlPullParser.End_DOCUMENT   1
        while(type != XmlPullParser.END_DOCUMENT){
            currentTagName = parser.getName();
            switch (type) {
            case XmlPullParser.START_TAG:
                if(currentTagName.equals("cat")){
                    cat = new Cat();
                }else if(currentTagName.equals("id")){
                    cat.setId(Integer.parseInt(parser.nextText()));
                }else if(currentTagName.equals("name")){
                    cat.setName(parser.nextText());
                }
                break;

            case XmlPullParser.END_TAG:
                if(currentTagName.equals("cat")){
                    list.add(cat);
                }
                break;
            }
            //获取下一个事件
            type = parser.next();

        }

        for(Cat c:list){
            System.out.println(c.getId()+"---"+c.getName());
        }
    }

}

cat类:


class Cat{
    private int id;
    private String name;
    public Cat() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Cat(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

解析的cat.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<cats>
    <cat>
        <id>1</id>
        <name>波斯猫</name>
    </cat>
    <cat>
        <id>2</id>
        <name>雪地猫</name>
    </cat>
    <cat>
        <id>3</id>
        <name>越野猫</name>
    </cat>
</cats>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值