JAXB Architecture

本节描述了 JAXB 处理模型中的组件和交互。

Architectural Overview

下图显示了组成 JAXB 实现的组件。

图:JAXB 体系结构概述

JAXB 体系结构概述

JAXB 实现由以下体系结构组件组成:

  • Pattern 编译器:将源 Pattern 绑定到一组 Pattern 派生的程序元素。绑定由基于 XML 的绑定语言描述。

  • Pattern 生成器:将一组现有程序元素 Map 到派生 Pattern。Map 由程序 注解 描述。

  • 绑定运行时框架:提供解组(读取)和编组(写入)操作,以使用架构派生的或现有的程序元素访问,操纵和验证 XML 内容。

JAXB 绑定过程

下图显示了 JAXB 绑定过程中发生的情况。

图:JAXB 绑定过程中的步骤

JAXB 绑定过程

JAXB 数据绑定过程中的一般步骤是:

  • 生成类:XMLPattern 用作 JAXB 绑定编译器的 Importing,以基于该 Pattern 生成 JAXB 类。

  • 编译类:必须编译所有生成的类,源文件和应用程序代码。

  • 解组:根据源 Pattern 中的约束编写的 XML 文档由 JAXB 绑定框架解组。注意,JAXB 还支持从文件和文档以外的源(例如 DOM 节点,字符串 缓冲区,SAX 源等)解组 XML 数据。

  • 生成内容树:解组过程生成从生成的 JAXB 类实例化的数据对象的内容树;此内容树表示源 XML 文档的结构和内容。

  • 验证(可选):解组过程涉及在生成内容树之前验证源 XML 文档。请注意,如果您在步骤 6 中修改内容树,则还可以使用 JAXB Validate 操作来验证更改,然后再将内容编组回 XML 文档。

  • 处理内容:Client 端应用程序可以使用绑定编译器生成的interface来修改 Java 内容树表示的 XML 数据。

  • 编组:将处理后的内容树编组到一个或多个 XML 输出文档中。可以在编组之前验证内容。

有关解组的更多信息

解组为 Client 端应用程序提供了将 XML 数据转换为 JAXB 派生的 Java 对象的功能。

有关编组的更多信息

编组为 Client 端应用程序提供了将 JAXB 派生的 Java 对象树转换为 XML 数据的能力。

默认情况下,Marshaller在生成 XML 数据时使用 UTF-8 编码。

编组之前,不需要 Client 端应用程序来验证 Java 内容树。也不要求 Java 内容树就其原始 Pattern 而言是有效的,以将其编组为 XML 数据。

有关验证的更多信息

验证是验证 XML 文档是否满足架构中表达的所有约束的过程。 JAXB 1.0 可以在非海量时间提供验证,还可以对 JAXB 内容树进行按需验证。 JAXB 2.0 仅允许在解组和编组时间进行验证。 Web 服务处理模型不宜读入数据,并严格写出。为了满足该模型,将验证添加到了编组时间,以便用户可以确认在以 JAXB 格式修改文档时他们没有使 XML 文档无效。