目前解析XML的方式有很多,常用的有Dom,jdom,dom4j,SAX等方式解析xml文件。各种方法应用场景不太一致。下面简单介绍一下Dom和SAX解析Xml文件的应用场景。
1、使用Dom解析Xml,每次需要把xml文件整个加载到内存中,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。应用场景如下:
a:xml文件或者xml流内容较少,
b:机器处理能力较强(硬盘,内存较为充足)
c:需要在解析的过程中,对文件内容进行,增、删、改、重新排列等操作。
缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;
优点:由于整个文档树在内存中,可以方便操作数据(场景c);
2、使用SAX解析XML基于事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。应用场景如下:
a:只需要从xml文件或者xml流中读取并保存的操作
b:机器可扩展性能有限(硬件资源对程序运行所需要的时间空间要求苛刻)
关于原理和概念,这里不再赘述,直接上代码。
我遇到的应用场景:从xml文件中读取数据,并保存到数据库。
1、自定义SaxHandler实现DefaultHandler,并处理相应的事件,如下:
a:startDocument():文档解析开始时调用,该方法只会调用一次
b:startElement(String uri, String localName, String name, Attri