我有一个XSD选择,它们都是javax.xml.datatype.XMLGregorianCalendar类型。按照建议,我使用了ObjectFactory和JAXBElement来区分这两种选择。
@XmlElementDecl(namespace = "http://me.com/1.0/api", name="timestamp")
JAXBElement<XMLGregorianCalendar> createTimestamp(XMLGregorianCalendar timestamp) {
return new JAXBElement<XMLGregorianCalendar>(_timestamp_QNAME, XMLGregorianCalendar.class, null, timestamp);
}现在,我希望将自动生成的WSDL中出现的类型更改为“dateTime”,而不是xs:anySimpleType。
看起来@XmlSchemaType注释在ObjectFactory方法上不受支持,并且包级@XmlSchameType标记也不能修改这里生成的类型。
@javax.xml.bind.annotation.XmlSchemaType(name="dateTime", type=javax.xml.datatype.XMLGregorianCalendar.class)
package my.example.api;在这种情况下,这仍然会生成xs:anySimpleType。
我不能在我的项目中使用EclipseLink。
发布于 2014-06-06 21:23:06
而不是做:
@XmlElementRefs({
@XmlElementRef(name="foo", type=JAXBElement.class),
@XmlElementRef(name="bar", type=JAXBElement.class)
})
public JAXBElement<XMLGregorianCalendar> getFooOrBar() {
return fooOrBar;
}您需要为每个元素提供一个单独的属性,才能获得您正在寻找的行为。由于缺省情况下JAXB不会将属性编组为null值,因此您仍然能够生成所需的XML。
public XMLGregorianCalendar getFoo() {
return foo;
}
@XmlSchemaType(name="time")
public XMLGregorianCalendar getFoo() {
return foo;
}https://stackoverflow.com/questions/24055262
复制相似问题