面试题 - Java中有几种XML的解析方式?

问:Java中有几种XML的解析方式?分别是什么?有什么样的优缺点?(说是四种其实就是两种JDOM是Java的DOM解析,DOM4J是在JDOM的继承上的进一步提升)

答:四种
1.SAX解析 – 逐行的进行解析

  • 解析方式是事件驱动机制!
  • SAX解析器,逐行读取XML文件解析,每当解析到一个标签的 开始/结束/内容/属性 时触发事件
  • 当在这些事件发生时,我们可以编写程序进行相应的处理
优点:
	1.分析能够立即开始,而不是等待所有数据被处理 -- 不一次性全部加载
	2.逐行加载,节省内层,有助于解析大于系统内存的文档 -- 前面加载的数据自动删除
	3.有时不必解析整个文档,它可以在某个条件得到满足时停止解析 -- 读到需要的就停止
	
缺点:
	1.单行解析。无法定位文档层次,无法同时访问同一文档的不同部分数据(因为逐行解析,当解析第n行,第n-1行已经被释放,无法进行操作)
	2.无法得知事件发生时元素的层次,只能自己维护节点的父/子关系 -- 程序员自己维护
	3.只读解析方式,无法修改XML文档的内容。

2.DOM解析 – 把数据全部存下来
是用与平台和语言无关的方式 表示XML文档的官方W3C标准,分析该结构通常需要加载整个文档并且在内存中建立文档树模型,程序员可以通过操作文档树,来完成数据的 获取/修改/删除 等操作。

优点:
	1.文档在内存中加载,允许对数据/结构做出更改
	2.访问是双向的,可以在任何时候在树中双向解析数据

缺点:
	文档全部加载到内存中,消耗资源过大(该缺点可忽略不计)

3.JDOM解析
目的是成为Java特点的文档模型,它简化与XML的交互 并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进
JDOM文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)Java/XML问题”

优点:
	1.使用具体类而不是接口,简化了DOM的API
	2.大量使用了Java集合类,方便了Java开发人员

缺点:
	1.没有较好的灵活性 -- 不是面向接口设计
	2.性能不是那么优异

4.DOM4J解析
它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,DOM4J是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML。
目前许多开源项目中大量采用DOM4J , 例如:Hibernate

题外话:现在主要是使用JSON技术进行数据的存储传输,因为它比XML技术优越一些,但是也不是一味的说JSON比XML好,XML在配置文件方面就有优势,JSON在网络数据传输、数据存储强于XML,总之就是各有优点。

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页