微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>

原文地址:https://www.jb51.cc/xml/296188.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。