加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用xmlpull解析xml文件

发布时间:2020-12-16 08:41:26 所属栏目:百科 来源:网络整理
导读:解析xml文件首先有一篇xml文件 apps app id 1 / id name Google / name version 1.0 / version / app app id 2 / id name Chrome / name version 2.1 / version / app app id 3 / id name Google Play / name version 2.3 / version / app / apps 首先创建一

解析xml文件首先有一篇xml文件

<apps> 
    <app> 
        <id>1</id> 
        <name>Google</name> 
        <version>1.0</version> 
    </app> 
    <app> 
        <id>2</id> 
        <name>Chrome</name> 
        <version>2.1</version> 
    </app> 
    <app> 
        <id>3</id> 
        <name>Google Play</name> 
        <version>2.3</version> 
    </app> 
</apps>

首先创建一个XmlPullParserFactory对象;(工厂模式需要newInstance())

XmlPullParserFactory factory=XmlPullParserFactory.newInstance();

再用工厂创建解析器;

XmlPullParser parser=factory.newPullParser();
Reader reader=new StringReader(response);
parser.setInput(reader);
int eventType=parser.getEventType();
        String id="";
        String name="";
        String version="";
        while (eventType!=XmlPullParser.END_DOCUMENT) {
            String nodeName=parser.getName();
            switch (eventType) {

            case XmlPullParser.START_TAG:
                if ("id".equals(nodeName)) {
                    try {
                        id=parser.nextText();
                    } catch (IOException e) {

                        e.printStackTrace();
                    }
                }else if ("name".equals(nodeName)) {
                    try {
                        name=parser.nextText();
                    } catch (IOException e) {

                        e.printStackTrace();
                    }
                }else if ("version".equals(nodeName)) {
                    try {
                        version=parser.nextText();
                    } catch (IOException e) {

                        e.printStackTrace();
                    }
                }


                break;
            case XmlPullParser.END_TAG:
                if ("app".equals(nodeName)) {
                    Log.i("TAG","id="+id);
                    Log.i("TAG","name="+name);
                    Log.i("TAG","version="+version);
                }
                break;

            default:
                break;

            }
            try {
                eventType=parser.next();
            } catch (IOException e) {

                e.printStackTrace();
            }
        }


解析器调用setInput()方法将xml文件数据设置进去开始解析
通过getEventType()得到当前的解析事件,当XmlPullParser.END_DOCUMENT不等于当前的解析事件时,在while循环中不停的解析调用nextText()方法可以获取下一个解析事件。

循环中通过getName()方法得到当前的节点的名字,如果节点等于id,name,version调用nextText()获取节点中的具体内容,解析完一个app节点就打印获取的内容。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读