xml解析之dom解析以及两种方式的特点
2017-02-17 21:31
507 查看
之前简单介绍了利用SAX解析方式解析xml文档,然后在总结一下另一种解析xml文档的方式——dom解析
我们也同样准备一个xml文档
对于dom解析的过程:在解析xml文档时会在内存中创建一个document类型的dom对象,代表着整个文档,接着读取books会在内存中创建一个element对象,并且在dom对象中保存了对books的引用,表明books是dom的子节点,然后每一次读到一个子节点的时候都会像之前一样创建一个element对象以此类推(标签体和属性也可以看做是element的一个 子节点),这样读取完整个xml文档,就在内存当中创建一个dom树,如图所示:
从前面的分析我们可以看到dom解析的优点是:十分的便于进行增删改查的操作,只需解析一次拿到dom对象后可以重复的使用,减少解析的次数
缺点是:解析的过程比较慢,需要将整个文档都解析完成后才能进行操作,同时将整个文档都加载到内存中时非常的消耗内存。
而SAX解析的优点就是:不需要整个文档都加载到内存中时才进行操作,当解析到某一个地方时自动的触发对相应的方法,文档解析的效率较高,同时对内存的消耗很少,无论多大的xml文档都可以进行解析。
缺点:每一次解析只能处理一次,在想对文档进行处理时还要再扫描一次。
目前使用较多的还是SAX解析,效率较高。毕竟你想修改xml文档时自己手动的去修改就行了,干嘛要使用程序去修改呢。
我们也同样准备一个xml文档
<books> <book> <title>java从入门到放弃</title> <price>10元</price> <author>张三</author> </book> <book> <title>C语言从入门到放弃</title> <price>12元</price> <span style="white-space:pre"> </span><author>李四</author> </book> </books>
对于dom解析的过程:在解析xml文档时会在内存中创建一个document类型的dom对象,代表着整个文档,接着读取books会在内存中创建一个element对象,并且在dom对象中保存了对books的引用,表明books是dom的子节点,然后每一次读到一个子节点的时候都会像之前一样创建一个element对象以此类推(标签体和属性也可以看做是element的一个 子节点),这样读取完整个xml文档,就在内存当中创建一个dom树,如图所示:
从前面的分析我们可以看到dom解析的优点是:十分的便于进行增删改查的操作,只需解析一次拿到dom对象后可以重复的使用,减少解析的次数
缺点是:解析的过程比较慢,需要将整个文档都解析完成后才能进行操作,同时将整个文档都加载到内存中时非常的消耗内存。
而SAX解析的优点就是:不需要整个文档都加载到内存中时才进行操作,当解析到某一个地方时自动的触发对相应的方法,文档解析的效率较高,同时对内存的消耗很少,无论多大的xml文档都可以进行解析。
缺点:每一次解析只能处理一次,在想对文档进行处理时还要再扫描一次。
目前使用较多的还是SAX解析,效率较高。毕竟你想修改xml文档时自己手动的去修改就行了,干嘛要使用程序去修改呢。
相关文章推荐
- XML解析方式分为两种:dom和sax
- Android解析Xml的三种方式:DOM、SAX以及XMLPull
- xml--解析01--xml的解析的两种方式Dom和SAX
- XML解析的两种方式DOM和SAX
- 详解android解析Xml的三种方式——DOM、SAX以及XMLpull
- XML - 十分钟了解XML结构以及DOM和SAX解析方式
- XML的两种解析方式Dom和SAX的区别
- XML解析的两种解析方式:DOM和SAX
- XML的两种解析方式Dom和SAX的区别
- XML - 十分钟了解XML结构以及DOM和SAX解析方式
- JAVA两种XML解析方式 SAX和DOM
- SAX方式,simpleXML方式解析XML以及DOM方式和SAX方式的异同
- XML解析的两种方式DOM和SAX
- xml的两种解析方式sax和dom解析的区别
- 详解android解析Xml的三种方式——DOM、SAX以及XMLpull
- XML两种解析方式:SAX和DOM性能对比
- JSON与XML的区别比较以及xml两种解析方式的比较
- XML以及XML解析方式[DOM+SAX]
- iOS ——XML数据结构及其两种解析数据的方式SAX 、DOM
- 详解android解析Xml的三种方式——DOM、SAX以及XMLpull