java - schemagen.exe 不会跳过 @XmlTransient 注释类

标签 java xsd jaxb

我像这样注释了一个 XmlAdapter 类:

@XmlTransient
public class DateTimeXmlAdapter extends XmlAdapter<String, DateTime> {

但 schemagen.exe 生成

<xs:complexType name="xmlAdapter" abstract="true">
    <xs:sequence/>
  </xs:complexType>

所以没有逃课,这是我所期望的。 XmlAdapter 确实是我的 transient 类继承自的抽象类。我应该怎么办?

我在字段中引用 DateTimeXmlAdapter 的原因是:

@XmlElement(name="StartDatetime")
@XmlJavaTypeAdapter(DateTimeXmlAdapter.class)
protected DateTime startDatetime;

我认为这是正确的。

最佳答案

看起来您已经告诉 schemagen 为您的 java 包中的所有内容生成模式类型,包括 XmlAdapter 子类。因此,它会看到您的适配器类,它被标记为 @XmlTransient,因此不会为其生成模式类型。但是,它确实会为 XmlAdapter 本身生成架构类型。

您需要更改调用 schemagen 的方式,以便从代码生成中排除您的适配器类。 @XmlTransient 在这里不合适,所以从适配器类中删除它。

关于java - schemagen.exe 不会跳过 @XmlTransient 注释类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1487285/

相关文章:

java - 循环泛型

java - 将 XML 解析/反序列化为 JavaObjects

c# - 未捕获使用 xsd 的 Xml 验证

java - @XmlIDREF 编码到 XML 时看不到层次结构

java - JAXB-Unmarshalling 期间的 ObjectFactory 角色是什么?

java - 使用 JAXB 将具有类似映射结构的 xml 解码为对象

java - 为什么 Sonar 似乎忽略了@SuppressWarnings

java - 如何创建一个类的实例,并将字符串数组作为唯一的实例变量?

java - 为什么ClassLoader保存全局信息时从特定类创建?

xml - XSD:如果元素具有特定值,则另一个应该是可选的