自定义JAXB类

时间:2014-12-03 09:18:56

标签: xml eclipse jaxb eclipselink

我已经从XSD创建了JAXB类,但是注意到有些类有setter 其中参数为Object。查看XSD,看起来这可能是元素的缺失数据类型定义。我猜测由于没有数据类型定义,JAXB将setter的参数默认为Object。这些元素中的一些(不是全部)也具有固定值集,因此可以解释为什么XSD中没有提供数据类型。

其中一个元素的一个例子是

<xs:element name="DefaultCar" fixed="XXXX"/>

我想使用Object作为参数来覆盖JAXB,并使用例如String。我使用外部绑定自定义文件取得了部分成功。尽管类的setter参数设置为我指定的值,但@XmlElement已被赋予type = Object.class,因此覆盖了setter的参数。是否可以阻止JAXB为@XmlElement放置type = Object.class

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="Car", propOrder = {
    "defaultCar"
} 

public class Car {
  @XmlElement(name = "DefaultCar", type = Object.class) 
  protected String defaultCar;  

  public void setDefaultCar(String value) {
    this.defaultCar = value;
}

1 个答案:

答案 0 :(得分:1)

在外部绑定自定义文件中,我在jxb:class ref="java.lang.String"节点下使用了jxb:bindingsxjc: override xs:simpleType definition的建议指出了我正确的方向。