JAXB Custom Bindings生成常量

时间:2016-11-03 09:36:40

标签: jaxb xjc onix

我从第三方提供的xsd文件生成Java类(准确地说是ONIX XML文件XSD)。模式定义了很多类型,具有shortnamerefname属性。不幸的是,ONIX的人没有使用fixed属性为这些字段设置单个允许的字符串值,而是他们这样做:

<xs:attribute name="refname">
    <xs:simpleType>
        <xs:restriction base="xs:token">
            <xs:enumeration value="AddresseeIDType"/>
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>

<xs:attribute name="shortname">
    <xs:simpleType>
        <xs:restriction base="xs:token">
            <xs:enumeration value="m380"/>
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>

这会导致JAXB为shortname和refname属性生成可变的String字段。在类生成过程中,有关这些字段的唯一有效值的信息将丢失。

有没有办法使用外部JAXB绑定文件让XJC以下列形式生成shortnamerefname的字段:

@XmlAttribute(name = "refname")
protected static final String refname = "AddresseeIDType";

@XmlAttribute(name = "shortname")
protected static final String shortname = "m380";

我知道有一个fixedAttributeAsConstantProperty属性,但只有xsd会以下列方式定义shortnamerefname时,这似乎才有效:

<xs:attribute name="refname" fixed="AddresseeIDType" />
<xs:attribute name="shortname" fixed="m380" />

任何帮助表示赞赏

0 个答案:

没有答案