我从第三方提供的xsd文件生成Java类(准确地说是ONIX XML文件XSD)。模式定义了很多类型,具有shortname
和refname
属性。不幸的是,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以下列形式生成shortname
和refname
的字段:
@XmlAttribute(name = "refname")
protected static final String refname = "AddresseeIDType";
@XmlAttribute(name = "shortname")
protected static final String shortname = "m380";
我知道有一个fixedAttributeAsConstantProperty
属性,但只有xsd会以下列方式定义shortname
和refname
时,这似乎才有效:
<xs:attribute name="refname" fixed="AddresseeIDType" />
<xs:attribute name="shortname" fixed="m380" />
任何帮助表示赞赏