我在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,而不仅仅是绑定规则。
提前致谢。
答案 0 :(得分:0)
您可以使用以下代替而不是创建复杂类型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>
希望这有帮助。