Java处理XML的三种主流技术

    大名鼎鼎的 DOM
说它大名鼎鼎但是一点不为过,DOM 是 W3C 处理 XML 的标准 API,它是许多其它与 XML 处理相关的标准的基础,不只是 Java,其它诸如 Javascript,PHP,MS .NET 等等语言都实现了该标准, 成为了应用最为普遍的 XML 处理方式。固然,为了能提供更多更增强大的功能,Java 对于 DOM 直接扩展工具类有不少,好比不少 Java 程序员耳熟能详的 JDOM,DOM4J 等等, 它们基本上属于对 DOM 接口功能的扩充,保留了不少 DOM API 的特性,许多本来的 DOM 程序员甚至都没有任何障碍就熟练掌握了另外二者的使用,直观、易于操做的方式使它深受广大 Java 程序员的喜好。

绿色环保的 SAX
SAX 的应运而生有它特殊的须要,为何说它绿色环保呢,这是由于 SAX 使用了最少的系统资源和最快速的解析方式对 XML 处理提供了支持。 但随之而来繁琐的查找方式也给广大程序员带来许多困扰,经常使人头痛不已,同时它对 XPath 查询功能的支持,使人们对它又爱又恨。

默默无闻的 Digester:XML 的 JavaBean 化
Digester 是 apache 基金组织下的一个开源项目,笔者对它的了解源于对 Struts 框架的研究,是否有不少程序员想要一解各大开源框架的设计甚至想要本身写一个功能强大的框架时会碰到这样一个难题: 这些形形色色的用 XML 语言标记的框架配置文件,框架底层是用什么技术来解析呢? DOM 解析耗费时间,SAX 解析又过于繁琐,何况每次解析系统开销也会过大, 因而,你们想到须要用与 XML 结构相对应的 JavaBean 来装载这些信息,由此 Digester 应运而生。它的出现为 XML 转换为 JavaBean 对象的需求带来了方便的操做接口,使得更多的相似需求获得了比较完美的解决方法 再也不须要程序员本身实现此类繁琐的解析程序了。与此同时 SUN 也推出了 XML 和 JavaBean 转换工具类 JAXB,有兴趣的读者能够自行了解。
程序员

  
三种解析方式比较

DOM
优缺点:实现 W3C 标准,有多种编程语言支持这种解析方式,而且这 种方法自己操做上简单快捷,十分易于初学者掌握。其处理方式是将 XML 整个做为相似树结构的方式读入内存中以便操做及解析,所以支持应用程序对 XML 数据的内容和结构进行修改,可是同时因为其须要在处理开始时将整个 XML 文件读入到内存中去进行分析,所以其在解析大数据量的 XML 文件时会遇到相似于内存泄露以及程序崩溃的风险,请对这点多加注意。

适用范围:小型 XML 文件解析、须要全解析或者大部分解析 XML、须要修改 XML 树内容以生成本身的对象模型

SAX
SAX 从根本上解决了 DOM 在解析 XML 文档时产生的占用大量资源的问题。其实现是经过相似于流解析的技术,通读整个 XML 文档树,经过事件处理器来响应程序员对于 XML 数据解析的需求。因为其不须要将整个 XML 文档读入内存当中,它对系统资源的节省是十分显而易见的,它在一些须要处理大型 XML 文档以及性能要求较高的场合有起了十分重要的做用。支持 XPath 查询的 SAX 使得开发人员更加灵活,处理起 XML 来更加的驾轻就熟。可是同时,其仍然有一些不足之处也困扰广大的开发人员:首先是它十分复杂的 API 接口使人望而生畏,其次因为其是属于相似流解析的文件扫描方式,所以不支持应用程序对于 XML 树内容结构等的修改,可能会有不便之处。

适用范围:大型 XML 文件解析、只须要部分解析或者只想取得部分 XML 树内容、有 XPath 查询需求、有本身生成特定 XML 树对象模型的需求

Digester/JAXB
优缺点 : 因为其是在上述二者的基础上衍生出来的工具类,为的是知足将 XML 转换为 JavaBean 的特殊需求,故而没有什么特别明显的优缺点。做为大名鼎鼎的开源框架 Struts 的 XML 解析工具 Digester,为咱们带来了将 XML 转换为 JavaBean 的可靠方法。
web

适用范围 : 有将 XML 文档直接转换为 JavaBean 需求。apache

相关文章
相关标签/搜索