现在的位置: 首页 > 综合 > 正文

XML第十八讲:JDOM深入详解

2013年10月03日 ⁄ 综合 ⁄ 共 2702字 ⁄ 字号 评论关闭

    前面我学习了XML解析的两种方式,一种是DOM解析,一种是SAX解析。我们知道这两种解析方式是属于JAXP的解析方式,这些解析是基础现在一些开源社区已经开源出一些比较方便的XML解析的内容了,如JDOM解析,这一讲我们就来学习一下JDOM的解析。

1.
JDOM 与 JAXP

1)
JDOM是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序。它的设计包含 Java 语言的语法乃至语义。

  
JDOM开源的包,可以在 http://www.jdom.org/ 
中进行下载

2)JAXP
(用于 XML 语法分析的 Java API)包含了三个软件包

(1)org.w3c.dom
,W3C 推荐的用于 XML 标准规划文档对象模型的 Java 工具

(2)org.xml.sax
,用于对 XML 进行语法分析的事件驱动的简单 API

(3)javax.xml.parsers
,工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具. JDOM 能够替换 org.w3c.dom 软件包来有计划地操作 XML 文档

2.
JDOM

1)JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。

2)JDOM
直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念等),把SAX和DOM的功能有效地结合起来。

[SAX和DOM之所以不好用,是因为他们是跨平台的,他们就是提出来一个接口,供不同的语言来实现出来的。而JDOM就是单纯的面向Java的,其他语言是没法用的,所以它利用Java本身的特性,所以用起来会得心应手。]

3)JDOM是用Java语言读、写、操作XML的新API函数。在直接、简单和高效的前提下,这些API函数被最大限度的优化。

4)在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。

5)JDOM
主要用来弥补DOM及SAX在实际应用当中的不足之处。这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能,而对于DOM来说,JAVA程序员在使用时来用起来总觉得不太方便。

6)DOM的缺点主要是由于DOM是一个接口定义语言(IDL),它的任务是在不同语言实现中的一个最低的通用标准,并不是为JAVA特别设计的。

7)
JDOM 中,XML 元素就是 Element 的实例,XML 属性就是 Attribute的实例,XML 文档本身就是Document的实例。

3.
W3C DOM设计的局限性

1)语言独立

(1)DOM
并不是用人们心目中的 Java 语言设计的。虽然这种方法保留了在不同语言中非常相似的 API,它也使那些习惯 Java 语言的程序员感到更麻烦。

(2)例如:Java
语言内建了一种 String 类,而 DOM 则规范定义了自己的 Text 类。

2)严格的层次结构

1)DOM API 直接沿袭了 XML 规范。在 XML 中,每件东西都是一个结点,因此您能在
DOM 中找到一个几乎每件东西都可以扩展的基于 Node 的接口和返回 Node 的一系列方法。

2)就多态性的观点来讲,它是优秀的,但鉴于如上解释,它在 Java 语言中的应用是困难而且不便的,其中从 Node
向叶类型作显式向下类型转换会导致代码的冗长和难以理解。

3)
接口驱动

1)公共 DOM API 仅由接口组成。w3c 对提供实现并不感兴趣,它只对定义接口(比较有意义)感兴趣。但它也意味着作为 Java 程序员使用 API 在创建 XML 对象时增加了负担,因为 w3c 标准大量使用工厂化的类和类似的灵活的但不直接的模式。

2)在某些应用中,XML 文档是仅由语法分析器建立的,而从不会由应用程序级代码建立,这是不相关的。但是,随着 XML 更广泛的使用,并不是所有问题都继续需要由语法分析器来驱动。应用程序的开发人员需要一个更方便的方法有计划地构造 XML 对象。

4)对于程序员,这些约束意味着庞大(在内存占用和接口大小方面)的和难掌握的 API,学习和使用都很难。

4. JDOM 设计的优点

1)JDOM 是作为一种轻量级 API 被制定的,最主要的是它是以 Java 为中心的。它在遵循 DOM 主要规则的基础上除去了上述缺点

2)JDOM 是 Java 平台专用的。

 只要有可能,API 都使用 Java 语言的内建 String 支持,因此文本值也适用于 String 。它还可利用 Java 2 平台的类集,如 List 和 Iterator ,给程序员提供了一个丰富的并且和 Java 语言类似的环境。

3)没有层次性。

 在 JDOM 中,XML 元素就是 Element 的实例,XML 属性就是 Attribute 的实例,XML 文档本身就是 Document 的实例。由于在 XML 中所有这些都代表了不同的概念,因此它们总是作为自己的类型被引用,而不是作为一个含糊的“结点”。

4)类驱动。

 因为 JDOM 对象就是像 Document 、 Element 和 Attribute 这些类的直接实例,因此创建一个新 JDOM 对象就如在 Java 语言中使用 new 操作符一样容易。它还意味着不需要进行工厂化接口配置 -- JDOM 的使用是直截了当的。

5. JDOM的使用

1)因为 JDOM 对象就是像 Document、Element 和 Attribute 这些类的直接实例,因此创建一个新 JDOM 对象就如在
Java 语言中使用 new 操作符一样容易。JDOM 的使用是直截了当的。

2)JDOM 使用标准的 Java 编码模式。只要有可能,它使用 Java new 操作符而不使用复杂的工厂模式,使对象操作即便对于初学用户也很方便。

3)JDOM是由以下几个包组成的

org.jdom包含了所有的xml文档要素的java类 [JDOM的核心包]

org.jdom.adapters包含了与dom适配的java类

org.jdom.filter包含了xml文档的过滤器类

org.jdom.input包含了读取xml文档的类

org.jdom.output包含了写入xml文档的类

org.jdom.transform包含了将jdomxml文档接口转换为其他xml文档接口

org.jdom.xpath包含了对xml文档xpath操作的类

4) org.jdom这个包里的类是你解析xml文件后所要用到的所有数据类型。

Attribute
CDATA
Coment
DocType
Document
Element
EntityRef
Namespace
ProscessingInstruction[处理指令]
Text


[说明]: 以上讲解了JDOM与W3C的一些处理XML的不同以及优缺点,还有JDOM的使用,下一讲内容我们将学习JDOM如何用代码来实现。下一讲内容:
JDOM实现XML解析

抱歉!评论已关闭.