首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@ ObjectFactory方法的XmlSchemaType

@ ObjectFactory方法的XmlSchemaType
EN

Stack Overflow用户
提问于 2014-06-05 16:30:16
回答 1查看 746关注 0票数 1

我有一个XSD选择,它们都是javax.xml.datatype.XMLGregorianCalendar类型。按照建议,我使用了ObjectFactory和JAXBElement来区分这两种选择。

代码语言:javascript
复制
@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标记也不能修改这里生成的类型。

代码语言:javascript
复制
@javax.xml.bind.annotation.XmlSchemaType(name="dateTime", type=javax.xml.datatype.XMLGregorianCalendar.class)
package my.example.api;

在这种情况下,这仍然会生成xs:anySimpleType。

我不能在我的项目中使用EclipseLink。

EN

回答 1

Stack Overflow用户

发布于 2014-06-06 21:23:06

而不是做:

代码语言:javascript
复制
@XmlElementRefs({
    @XmlElementRef(name="foo", type=JAXBElement.class),
    @XmlElementRef(name="bar", type=JAXBElement.class)
})
public JAXBElement<XMLGregorianCalendar> getFooOrBar() {
    return fooOrBar;
}

您需要为每个元素提供一个单独的属性,才能获得您正在寻找的行为。由于缺省情况下JAXB不会将属性编组为null值,因此您仍然能够生成所需的XML。

代码语言:javascript
复制
public XMLGregorianCalendar getFoo() {
    return foo;
}

@XmlSchemaType(name="time")
public XMLGregorianCalendar getFoo() {
    return foo;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24055262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档