我在XSD模式中有一个字段:
<xs:element name="magicField">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:totalDigits value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
在java类中生成了一个字段:
int magicField;
但随后,xsd模式已更改为:
<xs:element name="magicField">
<xs:complexType>
<xs:simpleContent>
<xs:restriction base="int_code">
<xs:totalDigits value="8"/>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
</xs:element>
其中“ int_code”:
<xs:complexType name="int_code">
<xs:simpleContent>
<xs:extension base="xs:positiveInteger">
<xs:attribute name="name"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
JAXB生成以下代码:
MagicField magicField;
和MagicField.java。
但是我仍然只需要
int magicField;
在生成的代码中。
完全不使用属性“名称”。
我无法更改架构,我的方式仅是绑定文件(xjb)。
我应该如何创建绑定以重新映射“ int_code”类型并获取“ magicField”作为simpleType(在代码中为
int
),而不是complexType(在代码中为magicField
)?据我了解,我不仅需要绑定规则,还需要自定义XmlAdapter。
提前致谢。
最佳答案
您可以使用以下命令来代替创建复杂类型int_code:
<xs:element name="magicField">
<xs:complexType>
<xs:simpleContent>
<xs:restriction base="xs:positiveInteger">
<xs:totalDigits value="8"/>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
或者,您可以按照以下更好的方法为magicField创建simpleType:
<xs:element name="magicField">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:totalDigits value="8" />
</xs:restriction>
</xs:simpleType>
</xs:element>
希望这可以帮助。