当前位置: 首页 > 知识库问答 >
问题:

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

崔棋
2023-03-14

我需要将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生成我的POJO,并且我有几个自定义注释要添加到生成的POJO中,因此我使用maven-jaxb2-plugin。

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

共有1个答案

裴永年
2023-03-14

您可以使用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>
 类似资料:
  • 问题内容: 我有的: 我正在从pojo生成JSON模式。我的生成架构的代码如下所示: 我通过上面的代码生成了几个模式。其中一个pojos具有内部嵌入式枚举,以限制可能的值,如下所示: 上面的代码应将传递给“星期一”,“星期二”,“星期三”等的JSON数据中可能的String值限制。 当我在有问题的代码上运行模式生成器时,我希望得到类似以下模式的内容: 但是相反,我得到这个: 我在Jackson模式

  • 有没有什么方法可以从wsdl生成xsd。任何链接或工具也可以。最简单的方法是什么?

  • 与JAXB为给定XSD生成JAXB类类似,Jackson是否提供了从XSD或JSON生成Jackson类的实用程序。 JAXB类geberator已经生成了一组为XSD模式定义的类。例如,对于多态类型,JAXB具有以下注释,以基于XML元素名称来标识名称。 是否可以在杰克逊中创建类似的类。即,基于XML元素名称来标识类型。

  • 我正在使用jooq为我的H2 db表生成pojo 但是生成的代码(如下) 缺少@GeneratedValue注释,这使得无法使用spring data rest repository插入新记录,因为传入的对象总是抱怨没有设置id字段。 我可以做什么配置/工作来让jooq正常工作? 下面是我用来在编译时生成pojo的相关pom文件部分: 变通方法 在添加该功能之前,遇到相同问题的任何人都可以选择替换

  • 问题内容: 我已经使用JAXB编写了许多类进行序列化,并且我想知道是否存在一种基于注释为每个对象生成XSD文件的方法。有这个工具吗? 喜欢的东西是 真棒 。有什么可以做的吗? 问题答案: 是的,您可以在JAXBContext上使用该方法: 您可以利用实现控制输出的位置: