xml有四种解析器
1、[color=red]DOM[/color]
官方 W3C 标准,把xml文档转化为一个包含其内容的树,并可以对树进行遍历。
优点:编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。
缺点:由于使用 DOM 解析器的时候需要处理整个 XML 文档,,所以对性能和内存的要求比较高,尤其是遇到很大的 XML 文件的时候。
适用于:由于它的遍历能力,DOM 解析器常用于 XML 文档需要频繁的改变的服务中。
2、[color=red]SAX[/color]
采用基于事件的模型,它在解析 XML 文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。
优点:对内存的要求比较低;
缺点:编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
适用于:让开发人员自己来决定所要处理的tag,特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。
3、[color=red]JDOM[/color]
简化与 XML 的交互并且比使用 DOM 实现更快。
JDOM 自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档。
JDOM 与 DOM 主要有两方面不同:
首先,JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API,但是也限制了灵活性;
第二,API 大量使用了 Collections 类,简化了那些已经熟悉这些类的 Java 开发者的使用;
4、[color=red]DOM4J[/color]
DOM4J 使用接口和抽象基本类方法;
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J.
总结:
a、JDOM 和 DOM 在性能测试时表现不佳,在测试 10M 文档时内存溢出,在小文档情况下还值得考虑使用 DOM 和 JDOM;
b、DOM 仍是一个非常好的选择,DOM 实现广泛应用于多种编程语言,它还是许多其它与 XML 相关的标准的基础,因为它正式获得 W3C 推荐,所以在某些类型的项目中可能也需要它(如在 javascript 中使用 DOM)。
c、SAX表现较好,这要依赖于它特定的解析方式;
d、DOM4J是最好的,目前许多开源项目中大量采用 DOM4J,例如大名鼎鼎的 Hibernate 也用 DOM4J 来读取 XML 配置文件。如果不考虑可移植性,那就采用DOM4J吧!
1、[color=red]DOM[/color]
官方 W3C 标准,把xml文档转化为一个包含其内容的树,并可以对树进行遍历。
优点:编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。
缺点:由于使用 DOM 解析器的时候需要处理整个 XML 文档,,所以对性能和内存的要求比较高,尤其是遇到很大的 XML 文件的时候。
适用于:由于它的遍历能力,DOM 解析器常用于 XML 文档需要频繁的改变的服务中。
2、[color=red]SAX[/color]
采用基于事件的模型,它在解析 XML 文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。
优点:对内存的要求比较低;
缺点:编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
适用于:让开发人员自己来决定所要处理的tag,特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。
3、[color=red]JDOM[/color]
简化与 XML 的交互并且比使用 DOM 实现更快。
JDOM 自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档。
JDOM 与 DOM 主要有两方面不同:
首先,JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API,但是也限制了灵活性;
第二,API 大量使用了 Collections 类,简化了那些已经熟悉这些类的 Java 开发者的使用;
4、[color=red]DOM4J[/color]
DOM4J 使用接口和抽象基本类方法;
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J.
总结:
a、JDOM 和 DOM 在性能测试时表现不佳,在测试 10M 文档时内存溢出,在小文档情况下还值得考虑使用 DOM 和 JDOM;
b、DOM 仍是一个非常好的选择,DOM 实现广泛应用于多种编程语言,它还是许多其它与 XML 相关的标准的基础,因为它正式获得 W3C 推荐,所以在某些类型的项目中可能也需要它(如在 javascript 中使用 DOM)。
c、SAX表现较好,这要依赖于它特定的解析方式;
d、DOM4J是最好的,目前许多开源项目中大量采用 DOM4J,例如大名鼎鼎的 Hibernate 也用 DOM4J 来读取 XML 配置文件。如果不考虑可移植性,那就采用DOM4J吧!