第 34 章 使用简单类型

摘要

XML 架构简单类型是 XML 架构原语类型,如 xsd:int,或使用 simpleType 元素进行定义。它们用于指定不包含任何子或属性的元素。它们通常映射到原生 Java 结构,不需要生成特殊的类来实现它们。枚举的简单类型不会导致生成的代码,因为它们映射到 Java 枚举类型。

34.1. 原语类型

概述

使用其中一个 XML 架构原语类型定义消息部分时,生成的参数的类型会被映射到对应的 Java 原生类型。当映射在复杂类型的范围内定义的元素时,使用相同的模式。生成的字段是对应的 Java 原生类型。

映射

表 34.1 “XML Schema 原语类型到 Java 原生类型映射” 列出 XML 架构原语类型和 Java 原生类型之间的映射。

表 34.1. XML Schema 原语类型到 Java 原生类型映射

XML 架构类型Java 类型

XSD:string

字符串

XSD:整数

BigInteger

XSD:int

int

XSD:long

long

xsd:short

XSD:decimal

BigDecimal

XSD:浮点值

浮点值

XSD:double

double

XSD:布尔值

布尔值

XSD:字节

byte

xsd:QName

QName

xsd:dateTime

XMLGregorianCalendar

XSD:base64Binary

byte[]

xsd:hexBinary

byte[]

xsd:unsignedInt

long

xsd:unsignedShort

int

xsd:unsignedByte

XSD:time

XMLGregorianCalendar

XSD:date

XMLGregorianCalendar

XSD:g

XMLGregorianCalendar

xsd:anySimpleType [a]

对象

xsd:anySimpleType [b]

字符串

XSD:duration

Duration

XSD:NOTATION

QName

[a] 对于这种类型的元素。
[b] 对于这种类型的属性。

打包程序类

将 XML 架构原语类型映射到 Java 原语类型,并不适用于所有可能的 XML 架构结构。有几个情况要求 XML 架构原语类型映射到 Java 原语类型对应的打包程序类型。这些情况包括:

  • 一个 元素,其 nillable 属性设为 true,如下所示:

    <element name="finned" type="xsd:boolean"
             nillable="true" />
  • minOccurs 属性的 element 元素设为 0,maxOccurs 属性设为 1,或其 maxOccurs 属性未指定,如下所示:

    <element name="plane" type="xsd:string" minOccurs="0" />
  • 使用 属性设置为 可选 属性或未指定的 attribute 元素,也没有指定其默认属性及其 固定 属性:

    <element name="date">
      <complexType>
        <sequence/>
        <attribute name="calType" type="xsd:string"
                   use="optional" />
      </complexType>
    </element>

表 34.2 “原语架构类型到 Java Wrapper Class Mapping” 演示了 XML 架构制语类型如何在这些情形中被映射到 Java 打包程序类。

表 34.2. 原语架构类型到 Java Wrapper Class Mapping

模式类型Java 类型

XSD:int

java.lang.Integer

XSD:long

java.lang.Long

xsd:short

java.lang.Short

XSD:浮点值

java.lang.Float

XSD:double

java.lang.Double

XSD:布尔值

java.lang.Boolean

XSD:字节

java.lang.Byte

xsd:unsignedByte

java.lang.Short

xsd:unsignedShort

java.lang.Integer

xsd:unsignedInt

java.lang.Long

xsd:unsignedLong

java.math.BigInteger

XSD:duration

java.lang.String