• Android之 解析XML文件(1)—— Pull解析


    (以下文章基本照抄《第一行代码》)

    解析XML文件有很多方法,这里主要讲Pull解析和SAX解析。这篇文章主要是讲Pull解析。

    一、Pull解析参考代码

    先上代码:

    private void parseXMLWithPull(String xmlData){
        try{
            XmlPullParserFactory factory = XmlPullPaeserFactory.newInstance();
            XmlPullParser xmlPullParser = factory.newPullParser();
            xmlPullParser.setInput(new StringReader(xmlData));
            int eventType = xmlPullParser.getEventType();
            String id = "";
            String name = "";
            String version = "";
            while(eventType != XmlPullParser.END_DOCUMENT){
                String nodeName = xmlPullParser.getName();
                switch(eventType){
                    case XmlPullParser.START_TAG:{
                        if("id".equals(nodeName)){
                            id = xmlPullParser.nextText();
                        }else if("name".equals(nodeName)){
                            name = xmlPullParser.nextText();
                        }else if("version".equals(nodeName)){
                            version = xmlPullParser.nextText();
                        }
                        break;
                    }
                    case XmlPullParser.END_TAG:{
                        if("app".equals(nodeName){
                            Log.d("MainActivity","id is " + id);
                            Log.d("MainActivity","name is " + name);
                            Log.d("MainActivity","version is " + version);
                        }
                        break;
                    }
                    default:
                        break;
                    }
                    eventType = xmlPullParser.next();
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    二、相关类简述

    1、 XmlPullParserFactory 

    XmlPullParserFactory 类是用来产生XML Pull解析的实现的。我们需要通过获取XmlPullParserFactory类的实例,来获取XML Pull解析接口的实例

    下面是API文档中对XmlPullParserFactory类的描述。

     下面是它的方法摘要。

    红框内是我们这次用到的方法。

    newInstance() 是一个静态方法,作用是产生一个PullParserFactory类的实例。

    newPullParser()也是一个静态方法,作用是产生一个XML Pull Parser的实例。

    2、XmlPullParser

     XmlPullParser不是类,而是一个接口。 XmlPullParser是定义了XMLPULL V1 API中提供的各种解析功能的接口。

    这个接口中,两个方法是关键。next() and nextToken() 方法。

    next()方法用于获取下一个解析事件。

    nextToken()方法和next()方法很类似,但是,如果在input中明确了事件类型,它还可以获取事件类型。

    当前解析事件状态可以通过getEventType()方法来获取。

    刚开始时,解析事件处于START_DOCUMENT状态。

    下面的解析事件类型可以通过next()方法获取。

    START_TAG : XML 开始标志被读取。

    TEXT : XML中的内容被读取。text的内容可以通过getText()方法来获取。

    END_TAG : XML 结束标志被读取。

    END_DOCUMENT : 没有更多的事件可以获取。

    我们使用XmlPullParser接口对XML文件进行解析的方法和使用cursor读取数据库中的数据是类似的。

    先获取当前解析事件的状态,如果当前状态不等于结束,那就通过各种方法检索我们想要的内容,最后再获取下一个解析事件状态,循环判断。

  • 相关阅读:
    从最近面试聊聊我所感受的职业天花板
    NetCore基于EasyNetQ的高级API使用RabbitMq
    Ocelot学习笔记
    使用iis反向代理.net core应用程序
    Odoo 部署windows server 2012
    低版本VMware与docker不兼容
    odoo tools
    Pandas 学习随笔
    Json数据校验 Json Schema
    python入门
  • 原文地址:https://www.cnblogs.com/cuglkb/p/6587011.html
Copyright © 2020-2023  润新知