一、四种方式的对比
【DOM】
DOM解析是将xml整个读入内存中,并在内存中以DOM树的形式存储。它是与平台无关的官方解析方式,所以不止在Java平台可以用DOM解析,在其他的平台也可以使用。
-优点:
1、树形结构,直观,易于理解,读取方便,代码易编写。
2、树形结构保存在内存中,容易修改。
-缺点
1、因为DOM是将xml文件整个读入内存中,所以对内存消耗大,在xml文件较大时,很容易造成内存溢出的情况。
【SAX】
SAX解析是Java独有的xml文件解析方式,是基于事件驱动的,每当Java程序读到xml文件中的标签头或读到标签结尾时,会触发相应的事件进行业务的处理。
-优点:
1、基于事件驱动,对内存消耗小。
2、适用于只需要处理xml文件中的数据的情况。
-缺点:
1、因为是基于事件驱动的,所以需要针对每一种事件都要编写相应的处理方法,编码比较繁琐。
2、因为SAX并不是一次性把xml读入内存中而是依次读入xml的数据的,所以不能同时操作同一个xml文件中的多个不同的数据。
【JDOM】
DOM和SAX是Java提供的两种基础的解析xml的方式,而JDOM是在基础方法上的扩展,要使用JDOM解析xml文件,需要额外导入jar包。
-优点
1、仅使用具体类而不是用接口。
2、JDOM的API大量使用了Collections类,操作更加方便。
【DOM4J】
DOM4J和JDOM一样,是在Java提供的基础解析xml方式上的扩展,要使用DOM4J也需要导入额外的jar包。
-优点
1、功能强大,能够处理更加复杂的xml文档,包含一些超出基本xml文档的功能。
2、性能优异,对处理较大的xml文件尤为明显。
二、四种方式解析xml文件的性能测试
XmlUtil.java
/**
* 这个类中包含了四种解析XML方式的具体方法
* @author Dan
*
*/
public class XmlUtil {
/**
* DOM解析方式
*/
public void domParseXml() {
System.out.println("=========DOM解析==========");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
Do