从JAXB 1.0迁移到JAXB 2.2.4

时间:2011-12-26 11:50:58

标签: jaxb jaxb2

我正在尝试将应用程序从旧版本的jaxb迁移到最新版本(2.2.4)

这是枚举产生的不同。

从旧版本生成代码

public class Type {

    private final static java.util.Map valueMap = new java.util.HashMap();
    public final static java.lang.String _ABC_4 = com.sun.xml.bind.DatatypeConverterImpl.installHook("ABC-4");
    public final static com.company.proj.xml.sysTypes.Type ABC_4 = new com.company.proj.xml.sysTypes.Type (_ABC_4);
    public final static java.lang.String _ABC_10 = com.sun.xml.bind.DatatypeConverterImpl.installHook("ABC-10");
    public final static com.company.proj.xml.sysTypes.Type ABC_10 = new com.company.proj.xml.sysTypes.Type (_ABC_10);
    private final java.lang.String lexicalValue;
    private final java.lang.String value;

// other code..

}

新生成的代码

@XmlType(name = "Type")
@XmlEnum
public enum Type {

    @XmlEnumValue("ABC-4")
    ABC___4("ABC-4"),
    @XmlEnumValue("XTC-10")
    ABC___10("ABC-10");
    private final String value;

// some other code
}

问题是不同版本中名称(ABC_4和ABC___4)的差异。有没有办法生成相同的名称?还有一种方法可以生成像_ABC_4等字符串成员,这些成员不是在较新版本的jaxb中生成的。问题是大量的代码更改使得几乎不可能迁移项目。

另一个区别是以前jaxb用于生成Interface和Impl类文件。现在,在较新的版本中,它只生成类文件。

我了解到这可以通过

实现
<jxb:bindings version="2.1"
              xmlns:jxb="http://java.sun.com/xml/ns/jaxb">
  <jxb:globalBindings generateValueClass="false" />
</jxb:bindings>

http://jaxb.java.net/guide/Migrating_JAXB_1_0_applications_to_JAXB_2_x.html

感谢您的帮助!

0 个答案:

没有答案