XML解析之PULL解析

不熟悉xml的同学可以先阅读下面两篇帖子
xml基础
https://www.jianshu.com/p/f61953320a43
xml语法
https://www.jianshu.com/p/361a2cb6d3e5
XML解析中有两种解析思想:
pull解析
sax解析
注意是解析思想
本篇帖子讲解pull解析


Dom解析:属于pull解析的一种。
DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。
例如:



    
        东城区
        西城区
        朝阳区
        海淀区
    

    
            浦东新区
            静安区
            徐汇区
    

解析成dom树结构如下:


XML解析之PULL解析_第1张图片
xml文件在内存中的结构树模型图

java在package org.w3c.dom包中为我们提供了对应的API,具体来讲

        //对应xml文档对象
        Document document;
        //xml文档的元素对象
        Element element;
        //xml元素中的值
        CharacterData characterData;
        //xml元素的属性
        Attr attr;

注:这几个API都是接口,而这几个接口的共同点是同时继承了Node接口,Node接口中提供了很多对节点进行增删改查的操作方法

具体来讲,当解析到文档声明的时候,就会生成document对象,当解析到元素的开始标签的时候就生成element对象,当解析到标签的属性的时候,就生成attr对象,当解析到标签体的时候,就生成Charactredata对象。

Pull解析的优点:十分方便对xml文档进行增删改查操作
只需解析一次,拿到Dom(即Document)对象后可以重复使用,减少解析的次数
Pull解析的缺点:解析过程比较慢,需要将整个文档都解析完成之后才能对文档进行操作
比较耗内存

再次强调,本篇帖子讲的是pull解析思想,文中DOM解析是pull解析的一种,文档中的API并不是解析XML的API,而这些API并不是我们需要关注的重点。

你可能感兴趣的:(XML解析之PULL解析)