XML10—— JDOM

  • JDOM是一种使用XML的独特Java工具包,用于快速开发XML应用程序。它的设计包含Java语言的语法乃至语义。
  • JAXP(用于XML 语法分析的 Java API)包含了三个软件包
    • org.w3c.dom , W3C推荐的用于XML标准规划文档对象模型的Java工具
    • org.xml.sax,用于对XML进行语法分析的事件驱动的简单 API
    • javax.xml.parsers ,工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具。

JDOM能够替换org.w3c.dom 软件包来有计划地探健XML文档

  • JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。(http://jdom.org)
  • JDOM直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念等),把SAX和DOM的功能有效地结合起来。
  • JDOM是用Java语言读、写、操作XML的新API函数。在直接、简单和高效的前提下,这些API函数被最大限度的优化。

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

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

DOM的缺点

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

语言独立:

  • DOM并不是用人们心目中的Java语言设计的。虽然这种方法保留了在不同语言中非常相似的API,它也使那些习惯Java语言的程序员感到更麻烦。
  • 例如:Java语言内建了一种 String类,而DOM则规范定义了自己的Text类。

严格的层次结构:

  • DOM API直接沿袭了XMLT 规范。在XML中,每件东西都是一个结点,因此您能在 DOM中找到一个几乎每件东西都可以扩展的基于Node的接口和返回Node的一系列方法。
  • 就多态性的观点来讲,它是优秀的,但鉴于如上解释,它在 Java语言中的应用是困难而且不便的,其中从Node向叶类型作显式向下类型转换会导致代码的冗长和难以理解

接口驱动:

  • 公共 DOM API仅由接口组成。w3c对提供实现并不感兴趣,它只对定义接口(比较有意义)感兴趣。但它也意味着作为Java程序员使用API在创建XML对象时增加了负担,因为w3c标准大量使用工厂化的类和类似的灵活的但不直接的模式。
  • 在某些应用中,XML文档是仅由语法分析器建立的,而从不会由应用程序级代码建立,这是不相关的。但是,随着XML更广泛的使用,并不是所有问题都继续需要由语法分析器来驱动。应用程序的开发人员需要一个更方便的方法有计划地构造XML对象。

类驱动:

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

JDOM概述

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

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

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

JDOM是由以下几个包组成的

  • org.jdom包含了所有的xml文档要素的java类- 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操作的类

JDOM类说明

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

  • Attribute
  • CDATA
  • Coment
  • DocType
  • Document
  • Element
  • EntityRef
  • Namespace
  • ProscessingInstruction
  • Text

 

posted @ 2021-01-28 22:35  我等着你  阅读(85)  评论(0编辑  收藏  举报