【问题标题】:How to customize the field name of the generated Java object using JAXB custom bindings?如何使用 JAXB 自定义绑定自定义生成的 Java 对象的字段名称?
【发布时间】:2015-03-18 21:04:28
【问题描述】:

我正在尝试为以下示例 xsd 生成 JAXB 生成的对象。

<xs:complexType name="AddressType">   
      <xs:sequence>   
        <xs:element name="USA" type="xs:string"/>   
      </xs:sequence>   
   </xs:complexType>  

并且在没有任何自定义绑定的情况下生成的类是

@XmlAccessorType(XmlAccessType.FIELD)   
@XmlType(name = "AddressType", propOrder = {   
    "usa"  
})   
public class AddressType {   

    @XmlElement(name = "USA", required = true)   
    protected String usa;   

    /**  
     * Gets the value of the usa property.  
     *   
     * @return  
     *     possible object is  
     *     {@link String }  
     *       
     */  
    public String getUSA() {   
        return usa;   
    }   

    /**  
     * Sets the value of the usa property.  
     *   
     * @param value  
     *     allowed object is  
     *     {@link String }  
     *       
     */  
    public void setUSA(String value) {   
        this.usa = value;   
    }   
}  

如您所见,字段名称是“usa”,setter/getter 是 getUSA/setUSA。

是否有任何自定义设置/绑定使字段名称也生成为“USA”而不是“usa”,这样字段和属性都是“USA”。

我推荐了How to customize property name in JAXB?

但那是自定义属性,而不是字段..任何帮助

顺便说一句,我正在使用 maven-jaxb2-plugin

【问题讨论】:

  • 关于这个问题的任何建议。如果 MAVEN-JAXB2 插件不是答案,还有其他选择吗?
  • 可以自定义绑定xjb文件。从 xsd 生成 java 工件时,使用 xjb 绑定文件,它将根据您在 xjb 文件中的自定义生成 java 类。

标签: jaxb2 jaxb2-maven-plugin


【解决方案1】:

示例 xjb 文件,如您的情况:binding.xjb

例子:

<jaxb:bindings 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.1">

<jaxb:bindings schemaLocation="schema.xsd">
    <jaxb:bindings node="//xs:element[@name='USA']">
        <jaxb:property name="usa" />
    </jaxb:bindings>
</jaxb:bindings>

</jaxb:bindings>

使用您的 xjc 命令添加 -b binding.xjb 或在您的 maven xjc 插件中配置绑定文件位置。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多