gpt4 book ai didi

java - @XmlSchemaType 用于 ObjectFactory 方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:47 24 4
gpt4 key购买 nike

我有一个 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。

ObjectFactory 方法似乎不支持 @XmlSchemaType 注释,并且包级别 @XmlSchameType 标记也无法修改此处生成的类型。

@javax.xml.bind.annotation.XmlSchemaType(name="dateTime", type=javax.xml.datatype.XMLGregorianCalendar.class)
package my.example.api;

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

我无法在我的项目中使用 EclipseLink。

最佳答案

而不是这样做:

@XmlElementRefs({
@XmlElementRef(name="foo", type=JAXBElement.class),
@XmlElementRef(name="bar", type=JAXBElement.class)
})
public JAXBElement<XMLGregorianCalendar> getFooOrBar() {
return fooOrBar;
}

您需要为每个元素拥有一个单独的属性才能获得您正在寻找的行为。由于默认情况下 JAXB 不会用 null 值编码(marshal)属性,因此您仍然能够生成您正在查找的 XML。

public XMLGregorianCalendar getFoo() {
return foo;
}

@XmlSchemaType(name="time")
public XMLGregorianCalendar getFoo() {
return foo;
}

关于java - @XmlSchemaType 用于 ObjectFactory 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24055262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com