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 。 尝试:

         

一旦找到正确的咒语,这实际上非常容易; 这是绑定文件: