之前简单介绍了利用SAX解析方式解析xml文档,然后在总结一下另一种解析xml文档的方式——dom解析
我们也同样准备一个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文档时自己手动的去修改就行了,干嘛要使用程序去修改呢。
新闻热点
疑难解答