用xmlpull解析xml文件

解析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节点就打印获取的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值