我正在尝试将应用程序从旧版本的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
感谢您的帮助!