pull 解析XML 文件

pull解析的特点

  • 事件驱动机制来解析
  • 当解析到一个节点,会自动停止,不会往下继续解析,好处 :很好能够控制流程
  • android默认采用pull解析

 

pull解析的事件类型

  • start_document :开始文档事件 ,事件类型
  • end_docuent :结束文档事件
  • start_tag: 开始标记
  • end_tag :结束标记

 

    private List<Map<String, String>> getXmlFormPull(InputStream is)
            throws Exception {
        List<Map<String, String>> mList = null;
        Map<String, String> map = null;
        // 1 得到pull对象
        XmlPullParser xml = Xml.newPullParser();
        xml.setInput(is, "utf-8");
        // 2 得到标记
        int eventType = xml.getEventType();
        // 判断标记 是否结束, 因为 pull 当解析到一个节点,会自动停止,不会往下继续解析
        while (eventType != XmlPullParser.END_DOCUMENT) {
            // 判断当前的节点信息
            switch (eventType) {
            case XmlPullParser.START_DOCUMENT:
                // xml文件的开始,初始化一个list
                mList = new ArrayList<Map<String, String>>();
                break;
            case XmlPullParser.START_TAG:
                // START_TAG ,有多个,需要进行判断
                String TagName = xml.getName();
                if (TagName.equals("books")) {
                    // 根节点 ,创建mapduixiang
                  
                } else if (TagName.equals("book")) {
            map = new HashMap<String, String>();
// 第一属性节点 String id = xml.getAttributeValue(0); map.put("ID", id); } else if (TagName.equals("name")) { String name = xml.nextText(); map.put("name", name); } else if (TagName.equals("price")) { String price = xml.nextText(); map.put("price", price); } break; case XmlPullParser.END_TAG: // 结束节点,一个子节点完成 if (xml.getName().equals("book")) { mList.add(map); } break; default: break; } // 标记移动到下一个节点 eventType = xml.next(); } System.out.println(mList.toString()); return mList; }

 

转载于:https://www.cnblogs.com/XingzhiDai/p/5557496.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值