美文网首页
xml解析数据 (pull解析)

xml解析数据 (pull解析)

作者: 吊浙 | 来源:发表于2019-08-09 14:04 被阅读0次

这是一个重要的问题---什么是 XML?

  1. XML 指可扩展标记语言(EXtensible Markup Language)
  2. XML 是一种标记语言,很类似 HTML
  3. XML 的设计宗旨是传输数据,而非显示数据
  4. XML 标签没有被预定义。您需要自行定义标签。
  5. XML 被设计为具有自我描述性。
  6. XML 是 W3C 的推荐标准

xml数据结构有很多种解析数据的方式今天我们先来说一下pull解析

  • 简单介绍一下什么是pull解析pull解析是事件驱动的所以根据数据的开始结束标记进行分析。
        FileInputStream fileInputStreamOFD = new FileInputStream(path + "/image2" + "/aaa.xml");

这是以文件形式读取的流 解析文件的时候要把流的形式读
我们解析的方法提成一个类

public class ParserByPull {
    //采用XmlPullParser来解析文件
    public static List<Bean> get(InputStream inputStream) throws Throwable {
        List<Bean> beanlist = null;
        Bean bean = null;
        //创建XmlPullParser
        XmlPullParser parser = Xml.newPullParser();
        //解析文件输入流
        parser.setInput(inputStream, "UTF-8");
        //得到当前的解析对象
        int eventType = parser.getEventType();
        //当解析工作还没完成时,调用next()方法得到下一个解析事件
        while (eventType != XmlPullParser.END_DOCUMENT) {
            switch (eventType) {
                case XmlPullParser.START_DOCUMENT:
                    //解析开始的时候初始化list
                    beanlist = new ArrayList<>();
                    break;
                case XmlPullParser.START_TAG:
                    //获得解析器当前指向的元素的名字
                    String XPPname = parser.getName();
                    if ("DocInfo".equals(XPPname)) {
                        bean = new OfdBean();
                    }
                    if (bean != null) {
                        if ("DocID".equals(XPPname)) {
                            //得到当前指向元素的值并赋值给name
                            bean.setDocID(parser.nextText());
                        }
                        if ("CreationDate".equals(XPPname)) {
                            //得到当前指向元素的值并赋值给age
                            bean.setCreationDate(parser.nextText());
                        }
                        if ("CreatorVersion".equals(XPPname)) {
                            //得到当前指向元素的值并赋值给sex
                            bean.setCreatorVersion(parser.nextText());
                        }
                        if ("DocRoot".equals(XPPname)) {
                            //通过解析器获取id的元素值,并设置一个新的Student对象的id
                            bean.setDocRoot(parser.nextText());
                        }
                    }
                    break;
                        //出发结束元素事件
                        case XmlPullParser.END_TAG:
                            if ("OFD".equals(parser.getName())) {
                                beanlist.add(bean);
                                bean = null;
                            }
                            break;
                        default:
                            break;
                    }
                    eventType = parser.next();
            }
            return beanlist;
        }
    }

由于这是事件驱动我们来看一下事件

int START_DOCUMENT = 0;
开始解析
    int END_DOCUMENT = 1;
结束解析
    int START_TAG = 2;
开始标
    int END_TAG = 3;
结束标
    int TEXT = 4;
下一个
    int ENTITY_REF = 6;
错误

还有很多。。。。
大家看源码去 大致的流程就是这样的

相关文章

  • Android15-XML和JSON解析

    1. XML解析的两种方式 服务器返回的XML数据如下 1.1使用Pull方式解析XML数据 使用Pull解析,首...

  • 数据解析

    XML数据格式解析 pull解析方式 sax解析方式 JSON 数据格式解析 解析代码很简单,但是还要有APP类,...

  • Android基础11

    网络基础: http方式访问网络 okhttp方式访问网络 pull方式解析xml数据 SAX方式解析xml数据5...

  • XML和JSON数据解析

    网络传输数据时最常用的格式有两种:XML和JSON XML解析: 对于XML的解析,常用的方法有:Pull解析方式...

  • xml解析数据 (pull解析)

    这是一个重要的问题---什么是 XML? XML 指可扩展标记语言(EXtensible Markup Langu...

  • SAX和DOM解析XML

    PULL方式 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件...

  • 2017-06-10-Android XML解析

    Android xml解析 1,SAX解析器 2,Dom解析器 3,pull解析器

  • 解析XML、JSON数据格式的方式?

    1.解析XML: (1)pull(开发首选); 原理:pull的解析方式与SAX解析类似,都是基于事件的模式,pu...

  • 五、Groovy语法(五)json、xml解析

    Groovy数据解析 一、json解析 请求网络数据并解析 二、xml解析 groovy解析xml数据 groov...

  • android笔记-数据储存与界面2

    Pull解析xml文件(掌握) 先自己写一个xml文件,存一些天气信息 拿到xml文件 拿到pull解析器 开始解...

网友评论

      本文标题:xml解析数据 (pull解析)

      本文链接:https://www.haomeiwen.com/subject/mrthjctx.html