SAX,DOM,JAXP,JDOM,DOM4J环球 - 亚美娱乐

SAX,DOM,JAXP,JDOM,DOM4J环球

2019-02-09 07:19:56 | 作者: 辰锟 | 标签: 文档,运用,功用 | 浏览: 7576

榜首:首要介绍一下SAX,DOM,JAXP,JDOM,DOM4J的根本知识:
(留意:至于 JAXP  |   JAXB  |   JAXM  |   JAXR  |   JAX-RPC 别离指什么,查看https://gceclub.sun.com.cn/staticcontent/html/xml/faq/#jaxr_)

1、sax、dom是两种对xml文档进行剖析的办法(没有详细的完结,只需接口)
所以不是解说器,假如光有他们,你是完结不了对xml文档的处理的。
sax的包是org.xml.sax
dom的包是org.w3c.dom
包的称号很重要,它有助于你了解他们之间的联系。

2、jaxp是api,他封装了sax\dom两种接口。并在sax\dom的根底之上,作了一套比较简略的api以供开发人员运用
jaxp的包是javax.xml.parsers
能够看看jaxp的源文件,它的文件中包含了对sax或许dom的引证(import)
jaxp也不是详细的完结,他仅仅一套api。假如你仅仅有jaxp那是无法作业的
(其实jaxp仅仅完结对sax、dom的包装,生成了DocumentBuilderFactory\DocumentBuilder
和SAXParserFactory SAXParser。也就是规划形式中的工厂形式,他的长处就是详细的方针( 解说器)树立由子类完结)

3、xerces解说器(声称地球上最快的xml解说器)
在xerces中对jaxp中界说的SAXParser SAXParserFactory DocumentBuilder DocumentBuilderFactory进行了承继(extends)对应SAXParserImpl SAXParserFactoryImpl DocumentBuilderImpl DocumentBuilderFactoryImpl
这就是为什么你的classpath中只需有xerces.jar(其间包含了sax dom jaxp )和 xercesImpl.jar就能够的原因了.

4、什么时分能够用其他解说器 比方crimson呢
他也是和xerces相同 是解说器,很简略,用crimson.jar 代替xercesImpl.jar

5、jdom和dom4j
 
W3C的DOM规范API难用的让人想撞墙,所以有一帮人开发Java专用的XML API意图是为了便于运用,这就是jdom的由来,开发到一半的时分,另一部分人又分了出来,他们有自己的主意,所以他们就去开发dom4j,形成了今日这样两个API,至于他们之间的功用,jdom全面惨败,dom4j大获全胜。我觉得jdom和dom4j就适当于sax/dom+jaxp,详细的解说器能够挑选。

第二:再介绍一下,dom,sax,jdom,dom4j的技能特色:

1: DOM
DOM 是用与渠道和言语无关的办法表明 XML 文档的官方 W3C 规范。DOM 是以层次结构安排的节点或信息片断的调集。这个层次结构答应开发人员在树中寻觅特定信息。剖析该结构一般需求加载整个文档和结构层次结构,然后才能做任何作业。由于它是依据信息层次的,因而 DOM 被认为是依据树或依据方针的。DOM 以及广义的依据树的处理具有几个长处。首要,由于树在内存中是耐久的,因而能够修正它以便应用程序能对数据和结构作出更改。它还能够在任何时分在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 运用起来也要简略得多。
另一方面,关于特别大的文档,解析和加载整个文档或许很慢且很耗资源,因而运用其他手法来处理这样的数据会更好。这些依据事情的模型,比方 SAX。

2:SAX
这种处理的长处十分类似于流媒体的长处。剖析能够当即开端,而不是等候一切的数据被处理。而且,由于应用程序仅仅在读取数据时查看数据,因而不需求将数据存储在内存中。这关于大型文档来说是个巨大的长处。事实上,应用程序乃至不用解析整个文档;它能够在某个条件得到满意时中止解析。一般来说,SAX 还比它的代替者 DOM 快许多。

3: 挑选 DOM 仍是挑选 SAX ?
关于需求自己编写代码来处理 XML 文档的开发人员来说,挑选 DOM 仍是 SAX 解析模型是一个十分重要的规划决议计划。 
DOM 选用树立树形结构的办法拜访 XML 文档,而 SAX 选用的事情模型。 
DOM 解析器把 XML 文档转化为一个包含其内容的树,并能够对树进行遍历。用 DOM 解析模型的长处是编程简单,开发人员只需求调用建树的指令,然后运用navigation APIs拜访所需的树节点来完结任务。能够很简单的增加和修正树中的元素。可是由于运用 DOM 解析器的时分需求处理整个 XML 文档,所以对功用和内存的要求比较高,尤其是遇到很大的 XML 文件的时分。由于它的遍历才能,DOM 解析器常用于 XML 文档需求频频的改动的效劳中。 
SAX 解析器选用了依据事情的模型,它在解析 XML 文档的时分能够触发一系列的事情,当发现给定的tag的时分,它能够激活一个回调办法,通知该办法拟定的标签现已找到。SAX 对内存的要求一般会比较低,由于它让开发人员自己来决议所要处理的tag。特别是当开发人员只需求处理文档中所包含的部分数据时,SAX 这种扩展才能得到了更好的体现。但用 SAX 解析器的时分编码作业会比较困难,而且很难一起拜访同一个文档中的多处不同数据。

4:jdom https://www.jdom.org
JDOM 的意图是成为 Java 特定文档模型,它简化与 XML 的交互而且比运用 DOM 完结更快。由所以榜首个 Java 特定模型,JDOM 一向得到大力推广和促进。正在考虑经过“Java 规范恳求 JSR-102”将它终究用作“Java 规范扩展”。从 2000 年头就现已开端了 JDOM 开发。
JDOM 与 DOM 主要有两方面不同。首要,JDOM 仅运用详细类而不运用接口。这在某些方面简化了 API,可是也约束了灵活性。第二,API 很多运用了 Collections 类,简化了那些现已了解这些类的 Java 开发者的运用。
JDOM 文档声明其意图是“运用 20%(或更少)的精力处理 80%(或更多)Java/XML 问题”(依据学习曲线假定为 20%)。JDOM 关于大多数 Java/XML 应用程序来说当然是有用的,而且大多数开发者发现 API 比 DOM 简单了解得多。JDOM 还包含对程序行为的适当广泛查看以避免用户做任安在 XML 中无意义的事。可是,它仍需求您充沛了解 XML 以便做一些超出根本的作业(或许乃至了解某些情况下的过错)。这也许是比学习 DOM 或 JDOM 接口都更有意义的作业。
JDOM 本身不包含解析器。它一般运用 SAX2 解析器来解析和验证输入 XML 文档(尽管它还能够将曾经结构的 DOM 表明作为输入)。它包含一些转换器以将 JDOM 表明输出成 SAX2 事情流、DOM 模型或 XML 文本文档。JDOM 是在 Apache 许可证变体下发布的开放源码。

5: DOM4J   https://dom4j.sourceforge.net/
尽管 DOM4J 代表了彻底独立的开发成果,但开端,它是 JDOM 的一种智能分支。它兼并了许多超出根本 XML 文档表明的功用,包含集成的 XPath 支撑、XML Schema 支撑以及用于大文档或流化文档的依据事情的处理。它还供给了构建文档表明的选项,它经过 DOM4J API 和规范 DOM 接口具有并行拜访功用。从 2000 下半年开端,它就一向处于开发之中。
为支撑一切这些功用,DOM4J 运用接口和笼统根本类办法。DOM4J 很多运用了 API 中的 Collections 类,可是在许多情况下,它还供给一些代替办法以答应更好的功用或更直接的编码办法。直接长处是,尽管 DOM4J 付出了更杂乱的 API 的价值,可是它供给了比 JDOM 大得多的灵活性。
在增加灵活性、XPath 集成和对大文档处理的方针时,DOM4J 的方针与 JDOM 是相同的:针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完好的处理方案,完结在本质上处理一切 Java/XML 问题的方针。在完结该方针时,它比 JDOM 更少着重避免不正确的应用程序行为。
DOM4J 是一个十分十分优异的Java XML API,具有功用优异、功用强大和极点易用运用的特色,一起它也是一个开放源代码的软件。现在你能够看到越来越多的 Java 软件都在运用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。

最终:我主张用dom4j

JDOM 和 DOM 在功用测验时体现欠安,在测验 10M 文档时内存溢出。在小文档情况下还值得考虑运用 DOM 和 JDOM。尽管 JDOM 的开发者现已阐明他们希望在正式发行版前专心功用问题,可是从功用观念来看,它的确没有值得引荐之处。别的,DOM 仍是一个十分好的挑选。DOM 完结广泛应用于多种编程言语。它仍是许多其它与 XML 相关的规范的根底,由于它正式取得 W3C 引荐(与依据非规范的 Java 模型相对),所以在某些类型的项目中或许也需求它(如在 javascript 中运用 DOM)。
SAX体现较好,这要依赖于它特定的解析办法。一个 SAX 检测行将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时躲藏在内存中)。
无疑,DOM4J是最好的,现在许多开源项目中很多选用 DOM4J,例如大名鼎鼎的 Hibernate 也用 DOM4J 来读取 XML 配置文件。假如不考虑可移植性,那就选用DOM4J吧!

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    PHP源码加密sohu

    加密,文件,目录
  • 2
  • 3
  • 4

    最大接连子数组之和alibaba

    数组,时分,元素
  • 5

    python规范库学习系列1环球

    目标,函数,元素
  • 6
  • 7

    JDBC 的三个Wmingxing

    进程,目标,办法
  • 8
  • 9

    JAVA根底 之 GUIITeyefenghuang

    组件,按钮,文本框
  • 10

    JAVA根底 之 MathITeyesina

    职业,软件,计算机