xjc:覆盖xs:simpleType定义
我正在使用xjc
编译一组XSD到Java类。 我希望能够覆盖给定简单类型的数据类型定义。 XSD代码段是:
Can be specified as a integer number or as xs:dateTime
这导致(毫不奇怪) CPT-DateTime
类型的元素在生成的Java类中定义为String
,例如
public class CcReportTrainInitialization { ... @XmlElement(required = true) protected String time; ... public String getTime() { return time; } public void setTime(String value) { this.time = value; } ...
我想要的是时间的数据类型(在这个例子中)是特定于日期时间的类型,例如XMLGregorianCalendar
或类似的东西:
public class CcReportTrainInitialization { ... @XmlElement(required = true) protected XMLGregorianCalendar time; ... public XMLGregorianCalendar getTime() { return time; } public void setTime(XMLGregorianCalendar value) { this.time = value; } ...
这可能吗?
我一直在试验一个绑定文件,但我不确定它甚至可以做到。 建议?
进一步的选择是:
-
jaxb:baseType
-
jaxb:javaType
-
xjc:javaType
– 类似于jaxb:javaType
但允许指定适配器类而不是unmarshal
/marshal
方法。
我实际上认为jaxb:class/@ref
customization不适合简单类型,因为这使它成为“类”类型。 这对于内部XJC模型很重要,一些XJC插件可能会错误地处理您的类型。
我认为你应该在这里使用jaxb:javaType
。 尝试:
一旦找到正确的咒语,这实际上非常容易; 这是绑定文件: