zoukankan      html  css  js  c++  java
  • 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读取数据库中的数据是类似的。

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

  • 相关阅读:
    Ananagrams(反片语)【map的应用】P114
    并查集初步——
    预处理器,编译器,汇编器,连接器
    https://pta.patest.cn/pta/test/15/exam/3/question/724
    stl入门--reverse函数
    无向图的深度遍历
    01背包
    动态规划——数字三角形(递归or递推or记忆化搜索)
    八皇后问题
    幂集的计算
  • 原文地址:https://www.cnblogs.com/cuglkb/p/6587011.html
Copyright © 2011-2022 走看看