文档章节

使用XmlPullParser解析XML字符串或者输入流

fantasiter
 fantasiter
发布于 2016/07/21 10:49
字数 227
阅读 26
收藏 1

XmlPullParser可以解析输入流和字符串: 这是待解析的文件.



<?xml version="1.0"?>
-<update> 
	<version>2</version> 
	<name>aiduke_Wandoujia_debug_v2_2016-07-19</name> 
 </update>
     public static void parseXMLString(String XMLString){
        if (TextUtils.isEmpty(XMLString)){
            throw new NullPointerException();
        }
        XmlPullParser parser = Xml.newPullParser();
        try {
            parser.setInput(new StringReader(XMLString));
            int event = parser.getEventType();
            while(event != XmlPullParser.END_DOCUMENT){
                String nodeName = parser.getName();
                switch (event){
                    case XmlPullParser.START_DOCUMENT:
                        break;
                    case XmlPullParser.START_TAG:
                        if ("version".equals(nodeName)){
                            //版本号
                            long version = Long.valueOf(parser.nextText());
                        }else if("name".equals(nodeName)){
                            //apk下载地址
                            String name = parser.nextText();
                        }
                        break;
                    case XmlPullParser.END_DOCUMENT:
                        break;
                }
            }
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e){
            e.printStackTrace();
        }
    }
解析输入流,我们在项目里可以配合Okhttp来获取输入流进行解析:
    
    public static void parseXMLString(InputStream is){
        XmlPullParser parser = Xml.newPullParser();
        try {
            parser.setInput(is,null);//可以制定编码格式,可以制定为null
            int event = parser.getEventType();
            while(event != XmlPullParser.END_DOCUMENT){
                switch (event){
                    case XmlPullParser.START_DOCUMENT:
                        break;
                    case XmlPullParser.START_TAG:
                        String nodeName = parser.getName();
                        if ("version".equals(nodeName)){
                            //版本号
                            long version = Long.valueOf(parser.nextText());
                        }else if("name".equals(nodeName)){
                            //apk下载地址
                            String name = parser.nextText();
                        }
                        break;
                    case XmlPullParser.END_DOCUMENT:
                        break;
                }
                event = parser.next();
            }
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e){
            e.printStackTrace();
        }

    }    

© 著作权归作者所有

共有 人打赏支持
fantasiter
粉丝 1
博文 115
码字总数 24535
作品 0
青岛
XML解析之PULL解析

Pull解析XML文件的方式与SAX解析XML文件的方式大致相同,他们都是基于事件驱动的。所以,利用pull解析XML文件需要下面几个步骤: 1)通过XMLPullParserFactory获取XMLPullParser对象。 2)通...

summerpxy
2014/02/21
2.2K
1
Android 使用LayoutInflater.Factory2创建布局

一,解析LayoutInflater运行原理 从创建一个LayoutInflater的方式我们可以知道,LayoutInflater是系统提供的单例对象 LayoutInflater layoutInflater = getLayoutInflater();↓LayoutInfla...

IamOkay
2015/04/24
0
0
android访问天气服务01--构建XmlPullParser

Pull模式解析原理: 与SAX解析器模拟相似,也提供了类似的事件驱动.使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进...

攀爬的小瓜牛
2014/09/01
0
0
Android开发进阶(二)--XML文件解析之PULL模式解析

Pull模式解析原理: 与SAX解析器模拟相似,也提供了类似的事件驱动.使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进...

程序袁_绪龙
2015/01/07
0
0
XML解析之——Pull解析和Xml转Json

Xml的使用在Android开发中也时不时地遇到,通常xml用来写配置文件。Xml解析也是Android开发人员必备的一项技术点。常见的XML解析为DOM解析,SAX解析和PULL解析。 DOM解析: 一次性将全部内容...

翻滚吧李博
2017/12/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么Java大神,都在看Spring Boot和Spring Cloud的书?

如果你是一名Java开发人员,并且最近正打算学习Spring Boot和Spring Cloud框架并寻找一些关于它们的最好的书籍,那么,你今天就来对地方了。 本文,我们将讨论一些学习Spring Boot和Spring ...

Java小铺
18分钟前
6
0
springboot logback日志配置

springboot 如果不使用外部tomcat的话,日志是需要自己配置的,不然的话就只有控制台的日志,但是日志又是我们在项目上了生产环境,出问题时,检查问题的唯一途径,所以我们要配置详细的日志...

曾大大胖
19分钟前
2
0
Linux服务器集体篡改时间的方法

Red Hat 虚拟化课程RH318,中小型公司使用的话,感觉可以匹敌OpenStack。手头上有一个VMware的映像,RHEV 3.5版的,只能把系统时间调整到2016年才能使用。Red Hat的RHEV已经更新到4.1版,不过...

大别阿郎
19分钟前
1
0
Tomcat启动异常:java.lang.ClassNotFoundException

警告: Name = mysqlDataSource Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have set value of "100" for "maxActive" property, wh......

hengbao5
20分钟前
1
0
GO错误的一些处理(defer,recover,panic)

package main import("fmt""errors")func main() {num := 10fmt.Printf("num的类型%T, num的值%v, num的地址%v\n", num, num, &num)num2 := new(int) //返回一个指针//num...

汤汤圆圆
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部