从XSD生成pojo时删除@XmlElement注释

时间:2017-10-12 17:19:48

标签: java xsd jaxb annotations maven-jaxb2-plugin

我需要将XML内容绑定到我的pojo的String属性,为此我创建了自定义DomHandler以提取所需的部分,如下所示

<sample>
<color>red</color>
<content>
     <p>here is content <b>with bold</b></p>
</content>
</sample>

将映射到pojo

@XmlRootElement
class Sample {
    @MyCustomAnnotation(value="abcde")
    @XmlElement(name="color")
    private String color;

    @MyCustomAnnotation(value="12345")
    @XmlElement(name="content")
    @XmlAnyElement(ContentHandler.class)
    private String content; 
}

我正在使用XSD生成我的pojos,我也有几个自定义注释要添加到生成的pojos中,所以我使用 maven-jaxb2-plugin

问题是,它根据需要添加注释以及与@XmlAnyElement互斥的@XmlElement,有没有办法避免使用XSD添加@XmlElement注释?

1 个答案:

答案 0 :(得分:1)

您可以使用xjc:dom告诉XJC您希望将此元素作为DOM元素处理。例如:

<jaxb:bindings 
    schemaLocation="http://schemas.opengis.net/owc/0.3.1/owsContext.xsd" 
    node="/xs:schema">

    <jaxb:schemaBindings>
        <jaxb:package name="net.opengis.owc.v_0_3_1"/>
    </jaxb:schemaBindings>

    <jaxb:bindings node="xs:complexType[@name='LayerType']//xs:element[@ref='kml:Document']">
        <xjc:dom/>
    </jaxb:bindings>

</jaxb:bindings>