第 34 章 使用简单类型

摘要

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

34.1. 原语类型

概述

当使用 XML Schema 原语类型来定义消息部分时,所生成的参数类型映射到对应的 Java 原生类型。在映射复杂类型范围内定义的元素时,使用相同的模式。生成的字段是对应的 Java 原生类型。

映射

表 34.1 “XML Schema Primitive Type to Java Native Type Mapping” 列出 XML Schema 原语类型和 Java 原生类型之间的映射。

表 34.1. XML Schema Primitive Type to Java Native Type Mapping

XML Schema 类型Java 类型

xsd:string

字符串

xsd:integer

BigInteger

xsd:int

int

xsd:long

long

xsd:short

short

xsd:decimal

BigDecimal

xsd:float

浮点值

xsd:double

double

xsd:boolean

布尔值

xsd:byte

byte

xsd:QName

QName

xsd:dateTime

XMLGregorianCalendar

xsd:base64Binary

byte[]

xsd:hexBinary

byte[]

xsd:unsignedInt

long

xsd:unsignedShort

int

xsd:unsignedByte

short

xsd:time

XMLGregorianCalendar

xsd:date

XMLGregorianCalendar

xsd:g

XMLGregorianCalendar

xsd:anySimpleType [a]

对象

xsd:anySimpleType [b]

字符串

xsd:duration

Duration

xsd:NOTATION

QName

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

打包程序类

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

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

    <element name="finned" type="xsd:boolean"
             nillable="true" />
  • 一个 元素 元素,其 minOccurs 属性设置为 0,其 maxOccurs 属性设为 1,或者其 maxOccurs 属性没有被指定,如下所示:

    <element name="plane" type="xsd:string" minOccurs="0" />
  • 属性 元素的 use 属性设为 可选,或者未指定,并且没有任何 默认 属性或指定的 固定 属性,如下所示:

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

表 34.2 “primitive Schema Type to Java Wrapper Class Mapping” 显示在这样的情形中如何将 XML Schema 原语类型映射到 Java 打包程序类。

表 34.2. primitive Schema Type to Java Wrapper Class Mapping

模式类型Java 类型

xsd:int

java.lang.Integer

xsd:long

java.lang.Long

xsd:short

java.lang.Short

xsd:float

java.lang.Float

xsd:double

java.lang.Double

xsd:boolean

java.lang.Boolean

xsd:byte

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