XML总体概括
- 可扩展的标记语言(Extensible markup language),它是一种通用的数据交换格式,与平台、系统、语言等无关,可以很好的用于数据集成和交互。“可扩展”表示可自定义的标记。
- 常见的XML数据解析方式有三种,一种是SAX(Simple API for XML),它是一种基于事件流的解析;另一种是DOM(Document Object Model)解析,这是一种基于XML文档树结构的解析。还有一种是DOM4J(for java DOM),一种很强大的java XML解析API。
DOM解析
- 实现原理:DOM解析器会把整个XML文档转化成DOM树放在内存中,通过对内存中节点树的操作来实现XML数据的解析。
简单的解析步骤:
1) 创建DOM解析器对象(DocumentBuilder)
2) 通过DOM解析器对象,将XML数据转化成节点树(DOM树)对象放入内存中
3) 通过对节点树的遍历实现对XML数据的解析DOM解析的优缺点
1) 优点- 将XML数据对应的节点树加载到内存中,这样就能实现对XML数据的随机访问了
- 对于XML文档的增、删、改比较方便
2) 缺点 - DOM解析是一次性将XML数据解析完并会把整个节点树加载到内存中,会占用比较大的内存空间
- 另外,对于复杂结构的XML解析比较耗时,解析效率低
SAX解析
- 实现原理:SAX是基于事件驱动来解析XML数据的。SAX在解析XML文档时,会触发一系列的事件,并且调用相应的事件处理函数,我们要做的事就是实现这些事件处理函数相应的操作
- 实现步骤
1) 获得SAX解析器对象
2) 对XML文档顺序扫描,扫描到文档的开始与结束、元素的开始与结束这些位置的时候,会触发相应的事件,执行相应的事件处理函数。 - 优缺点
1) 优点:
a) 事先调用整个XML文档,占用的内存资源少
b) 解析方式是边读边解析,适用于解析复杂结构的XML数据
2) 缺点:
a) XML数据的解析方式是顺序的,不支持随机访问XML文档
b) 不适用与修改XML文档
DOM4J解析
DOM4J呢是一个非常优秀的java解析XML文档的API,它解析XML文档的性能好、功能强大而且使用简单。DOM4J开源,而且很多java开源项目都会使用DOM4J来解析xml配置文件的信息。譬如水sun公司的JAXM,还有Hibernate。缺点就是API比较复杂。