zoukankan      html  css  js  c++  java
  • 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; }
    大道至简,知易行难,知行合一,得到功成;大道至简,悟在天成。
  • 相关阅读:
    SRM 594 DIV 2
    python 算法
    virtualenv和virtualenvwrapper介绍、安装和使用
    Django自带的ORM如何执行group by(聚合查询)语句(求和、累积、平均)
    Django REST FrameWork中文教程4:验证和权限
    Django REST FrameWork中文教程3:基于类的视图
    Django REST FrameWork中文教程2:请求和响应
    Django REST framework 中文教程1:序列化
    MySQL基础-存储过程和函数
    MySQL基础-变量
  • 原文地址:https://www.cnblogs.com/XingzhiDai/p/5557496.html
Copyright © 2011-2022 走看看