JAXB Architecture
本节描述了 JAXB 处理模型中的组件和交互。
Architectural Overview
下图显示了组成 JAXB 实现的组件。
图:JAXB 体系结构概述
JAXB 实现由以下体系结构组件组成:
-
Pattern 编译器:将源 Pattern 绑定到一组 Pattern 派生的程序元素。绑定由基于 XML 的绑定语言描述。
-
Pattern 生成器:将一组现有程序元素 Map 到派生 Pattern。Map 由程序 注解 描述。
-
绑定运行时框架:提供解组(读取)和编组(写入)操作,以使用架构派生的或现有的程序元素访问,操纵和验证 XML 内容。
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 文档无效。