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

解析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类的描述。

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

 下面是它的方法摘要。

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

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

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读取数据库中的数据是类似的。

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

 

相关文章:

  • 2022-12-23
  • 2021-10-26
  • 2022-12-23
  • 2021-11-07
  • 2022-12-23
  • 2021-12-17
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-06
  • 2021-07-17
  • 2021-10-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案