38.6. 指定元素或属性的基本类型
概述 复制链接链接已复制到粘贴板!
有时您需要自定义为元素生成的对象类,或作为 XML 架构复杂类型的一部分定义的属性。例如,您可能希望使用更常规的对象类来允许替换简单的类型。
执行此操作的一种方法是使用 JAXB 基础类型自定义。它允许开发人员根据需要指定生成的对象类来代表元素或属性。基本类型自定义允许您指定 XML 架构结构和生成的 Java 对象之间的备用映射。这个备用映射可以是简单的分类,也可以是默认基本类的规范化。它还可以是 XML 架构原语类型到 Java 类的映射。
自定义使用 复制链接链接已复制到粘贴板!
要将 JAXB 基础 type 属性应用到 XML Schema 结构,可使用 JAXB baseType
自定义元素。baseType
自定义元素是 JAXB 属性
元素的子级,因此必须正确嵌套它。
根据您要自定义 XML Schema 结构到 Java 对象的映射的方式,您可以添加 baseType
自定义元素的 name
属性或 javaType
子元素。name
属性用于将生成的对象的默认类映射到同一类层次结构中的另一个类。当您要将 XML Schema 原语类型映射到 Java 类时,会使用 javaType
元素。
您不能在同一 baseType
自定义元素中使用 name
属性和 javaType
子元素。
特殊化或常规默认映射 复制链接链接已复制到粘贴板!
baseType
自定义元素的 name
属性用于将生成的对象的类重新定义到同一 Java 类层次结构中的类。属性指定 XML 架构结构映射到的 Java 类的完全限定名称。指定的 Java 类 必须是 代码生成器通常为 XML Schema 构造生成的 Java 类的超级类或子类。对于映射到 Java 原语类型的 XML 架构类型,打包程序类用作自定义目的的默认基本类。
例如,定义为 xsd:int
的元素使用 java.lang.Integer
作为其默认基本类。name
属性的值可以指定任意 Integer
的超级类,如 Number
或 Object
。
对于简单类型替换,最常见的自定义是将原语类型映射到对象对象。
例 38.27 “基本类型的命令行自定义” 显示一行自定义,它将复杂类型中的一个元素映射到 Java 对象对象。
例 38.27. 基本类型的命令行自定义
例 38.28 “用于自定义基本类型的外部绑定文件” 显示用于自定义的外部绑定文件,如 例 38.27 “基本类型的命令行自定义” 所示。
例 38.28. 用于自定义基本类型的外部绑定文件
生成的 Java 对象的 @XmlElement
注释包含一个 type
属性。type
属性的值是代表生成对象的默认基本类型的类对象。如果是 XML Schema 原语类型,则类是相应 Java 原语类型的打包程序类。
例 38.29 “带有修改的基本类的 Java 类” 显示根据 例 38.28 “用于自定义基本类型的外部绑定文件” 中的模式定义生成的类。
例 38.29. 带有修改的基本类的 Java 类
使用 javaType 复制链接链接已复制到粘贴板!
javaType
元素可用于自定义如何使用 XML 架构原语类型定义的元素和属性映射到 Java 对象。使用 javaType
元素比使用 baseType
元素的 name
属性提供更大的灵活性。javaType
元素允许您将原语类型映射到任何类对象。
有关使用 javaType
元素的详细描述,请参阅 第 38.2 节 “指定 XML 架构 Primitive 的 Java 类”。