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

标签 java xsd jaxb annotations maven-jaxb2-plugin

我需要将 XML 内容绑定(bind)到我的 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 生成我的 pojo,我还有一些自定义注释要添加到生成的 pojo,因此我正在使用 ma​​ven-jaxb2-plugin

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

最佳答案

您可以使用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>

关于java - 从 XSD 生成 pojo 时删除 @XmlElement 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46715440/

相关文章:

java.lang.IllegalStateException : Could not find method in a parent or ancestor Context 错误

java - Android Listview Inside viewpager 始终显示所有页面中最后一个 viewpager 页面数组列表数据

java - 如何使用 Java 从 XSD 生成 XML 数据?

java - 为什么 Java 将包访问设置为默认?

java - Spring 和 JPA : error while running JUnit test

c# - 从 DataTable 写入时如何指定 XML 输出格式?

java - 我根据 xsd 验证 xml 后如何列出所有错误?

java - 在 Java 9 中使用 Spring JAXB Marshaller 的正确方法,无需定义其他模块

java - 如何从 JAXB 创建自定义编码输出?

java - JAXB Fragment Marshal 不带命名空间