pull解析


        // 得到Xml解析器(pull方式)
        XmlPullParser pullParser = Xml.newPullParser();

        try {
            // 设置要解析的xml文件到解析器里
            pullParser.setInput(getAssets().open("data.xml"), "utf-8");

            String tagName = null;
            // 得到读取到的事件类型,就是读取到了什么类型的标签(开始标签,结束标签,文本)
            int eventType = pullParser.getEventType();
            // 当文档读取结束,循环结束
            while (eventType != XmlPullParser.END_DOCUMENT) {

                switch (eventType) {
                // "文档开始读取"
                case XmlPullParser.START_DOCUMENT:

                    System.out.println("文档开始读取");
                    break;
                // 读取到开始标签
                case XmlPullParser.START_TAG:

                    // 得到当前开始标签的名字
                    tagName = pullParser.getName();

                    System.out.println("文档读取到开始标签" + tagName);
                    if ("person".equals(tagName)) {
                        person = new Person();
                        // 得到开始标签的属性值,通过角标获取,因为只有一个id="23"的属性,所以通过角标等于0读取
                        // <person id="23">
                        String id = pullParser.getAttributeValue(0).trim();
                        person.setId(Integer.parseInt(id));
                    }

                    break;
                // 读取到文本
                case XmlPullParser.TEXT:
                    if ("name".equals(tagName)) {
                        // 获得name标签对应的文本,先获得标签对应的文本,再把文本内容封装起来
                        // 获得标签对应的文本,pullParser.getText()
                        person.setName(pullParser.getText().trim());
                        System.out.println("文本内容" + pullParser.getText());
                    } else if ("age".equals(tagName)) {
                        // 获得age标签对应的文本
                        person.setAge(pullParser.getText().trim());
                        System.out.println("文本内容" + pullParser.getText());
                    }

                    break;
                // 读取到结束标签
                case XmlPullParser.END_TAG:
                    // 得到结束标签名字
                    tagName = pullParser.getName();
                    System.out.println("文档读取到结束标签" + tagName);
                    if ("person".equals(tagName)) {
                        System.out.println(person.toString());
                        list.add(person);
                        person = null;
                    }
                    tagName = "";

                    break;
                // 文档结束读取"
                case XmlPullParser.END_DOCUMENT:

                    System.out.println("文档结束读取");
                    break;
                }
                // 到下个节点,并且返回下一个节点的类型
                eventType = pullParser.next();

            }

        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值