4

使用 JXC 模式生成 ant 任务,我似乎无法让它忽略枚举。我有几个枚举在内部用于表示与生成的 XML 无关的类型或次要配置值。

我可以使用枚举作为@XmlTransient 排除该字段以将其从对象的架构中排除,但仍会为枚举生成一个 simpleType 描述符!

例子:

public class CustomerType { 

    @XmlTransient    
    public enum IsolationLevel { ALL, SAME_TYPE, SELECTED }

    @XmlTransient
    private Long id;
    @XmlValue
    private String name;
    @XmlTransient
    private IsolationLevel isolation = IsolationLevel.ALL;
}

生成的架构:

<xs:simpleType name="isolationLevel">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ALL"/>
      <xs:enumeration value="SAME_TYPE"/>
      <xs:enumeration value="SELECTED"/>
    </xs:restriction>
</xs:simpleType>

有人对如何让 JXC 忽略枚举有任何想法吗?它没有被任何 XML 映射属性或字段使用,并且枚举本身被标记为 @XmlTransient - 为什么它仍然是我的架构的一部分?

4

1 回答 1

0

我也遇到了这个问题,并将我的 pom 更新为 2.2.11,它至少已针对该版本进行了修复。评论中提到的 Jira 错误也指出它已在 2.2.5 中修复。为此,我必须添加三个依赖项,如下所示:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.12</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.2.11</version>
</dependency>
于 2017-02-23T16:49:19.173 回答