JAXB - 没有XSD枚举的Java枚举

时间:2014-12-10 04:42:33

标签: java jaxb

我有一个类似这样的XSD:

<xsd:simpleType name="status">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="(open|closed)"/>
    </xsd:restriction>
  </xsd:simpleType>

有没有办法生成Java Enum?不幸的是,typesafeEnumClass仅适用于Only simpleType definitions with enumeration facets can be customized using this binding declaration.

我知道我可以将它绑定到这样的Java类型:

<jaxb:bindings node="//xsd:simpleType [@name='status']">
        <jaxb:javaType
            name="package.ImplType"
            parseMethod="package.ImplConv.parseStringToEnum"
            printMethod="package.ImplConv.printEnumToString"/>
    </jaxb:bindings>

但由于其他原因,这对我不起作用。

我只是想让XSD保持不变。

1 个答案:

答案 0 :(得分:0)

编写自己的类Status并自定义要使用该类映射的简单类型status

    <jaxb:bindings node="xs:simpleType[@name='status']">
        <jaxb:typesafeEnumClass ref="Status"/>
    </jaxb:bindings>

在这种情况下,XJC将使用Status类作为status简单类型。

据我所知,源代码中的“typesafe-enum-capable”架构结构的检查是硬编码的。