您可以为枚举成员更改所需的名称.有两种方法可以做到这一点:
> JAXB映射文件
> XSD注释
使用XSD注释
如果可以修改架构,则可以将JAXB元素作为< xs:appinfo>插入.延期:
...
这应该生成:
@XmlEnum
public enum IdTypeEnum {
SIP1,
SIP2;
...
没有任何@XmlEnumValue注释,因为现在它们具有相同的名称.
使用绑定文件
如果您不能更改架构,则也可以使用JAXB绑定来完成:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
并在运行xjc时包括绑定文件:
xjc -b bindings-file.xml sip.xsd
使用XSLT生成绑定文件
如果您不想单独复制相同的值,那么使用XSLT生成绑定文件将非常简单.这是一个例子:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
version="1.0">
您可以在此XSLT Fiddle中对其进行测试,也可以使用它来生成绑定文件.
我不确定为什么xjc会在您的枚举中自动添加下划线,因为这是不必要的.通常,当枚举会生成非法的Java标识符(例如以数字开头,包含破折号等)时,这样做是可能的,这可能是使用了一些基于Java编码约定的算法(而Java枚举和常量通常是大写的,带有下划线分隔的不同单词).它可能会将SIP和号码视为不同的单词.