110 likes | 272 Views
9. 使用 JAXB 处理 XML 数据. 对于使用面向对象语言的程序开发人员,最熟悉的莫过于内存中的各种对象了,通过调用对象的方法、设置对象属性,可以方便地对这些对象进行各种操作。 第 8 章中介绍的 XML 解析技术,包括 DOM 和 SAX ,它们都非常依赖于 XML 技术的细节。 第一、这样的数据处理方式要求开发人员除了熟练地使用面向对象的编程语言之外,还必须掌握 XML 的相关技术,并在处理数据前,对数据的结构一清二楚;
E N D
9. 使用 JAXB 处理 XML 数据 • 对于使用面向对象语言的程序开发人员,最熟悉的莫过于内存中的各种对象了,通过调用对象的方法、设置对象属性,可以方便地对这些对象进行各种操作。 • 第 8 章中介绍的 XML 解析技术,包括 DOM 和 SAX,它们都非常依赖于 XML 技术的细节。 • 第一、这样的数据处理方式要求开发人员除了熟练地使用面向对象的编程语言之外,还必须掌握 XML 的相关技术,并在处理数据前,对数据的结构一清二楚; • 第二、对于需要进行大量 XML 数据处理的应用场景(比如基于 Web 服务的 SOA 环境),这种处理方式比较麻烦,效率不高。
9.1 数据绑定 • 数据绑定是指从数据源获得一些数据(比如从 XML 文档、文本文件或者数据库中)、并通过程序表示这些数据的过程,也就是将源数据转换成为 Java 虚拟机能够理解并且可以直接操作的某种内存中的数据结构(即 Java 对象)。 • 相应地,数据绑定软件包应该能够用 VM 上修改的数据(经过更新的 Java 对象)更新底层存储媒介(XML 文档、文件或数据库表)中的数据。
数据绑定的一般概念和 XML 数据绑定 • 文法(Grammar) • 解组(Unmarshalling) • 编组(Marshalling) • 往返(Round-tripping) • 语义等价(Semantic Equivalent) • 映射或转换规则(Mapping/Transformation Rules) • 数据类型绑定(Data Type Binding)
9.2 JAXB API 及其基本使用 • 在本章内容中,我们将以 SUN JDK 1.6 中的 JAXB 2.0 为例,介绍如何使用 XML 数据绑定功能,轻松地、灵活地对 XML 数据进行处理。
JAXB 概述 • Java API for XML Binding (JAXB) 是一种与 XML 相关的 Java 技术,它使得程序开发人员可以从 XML Schema 文件生成对应的 Java 类(从程序设计的角度来看,两者都用于描述某种数据结构),以实现数据绑定的功能,并且可以容易地对数据进行操作。 • 使用 JAXB 基本不需要掌握任何 XML 知识。可以操作普通 Java 对象(并不特定于 XML 的对象,如 DOM 的 Node 或 Text 接口),并将这些对象直接表示为 XML,这意味着较低的入门门槛。 • 但实际上,对 XML 的了解越少,要想合理使用 JAXB 就愈加显得困难。
使用 JAXB 进行数据绑定的过程(1) 1. 根据 XML Schema 生成 Java 类,编译所生成的类; 2. 根据 Schema 对 XML 文档进行解组,从而将平面的文档数据映射为一些从 Schema 派生的 JAXB 类的对象,而这些对象之间相互关联,能够准确地表示 XML 文档中的层次关系。在 JAXB 中,将这些对象所表示的信息称为内容树(content tree)。 4. 在通过解组将 XML 文档转换为 Java 对象之前,可以根据 Schema 中的数据模型对 XML 文档进行验证;另一方面,在客户端程序中可能对解组所得到的对象进行了相应的更改,因此在将其编组为 XML 文档之前,可以再次使用 Schema 对数据进行验证,以在编组后确保得到正确的 XML 数据。 5. 将 Java 对象编组为一个或者多个 XML 输出文档。 3. 通过所生成的 JAXB 类的对象,客户端应用程序可以修改这些对象所对应的 XML 数据。
9.2.4 对 XML 文档进行解组操作 • TestJaxb.java