非常简单的用例。将以下XSD翻译为java:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Foo_Bar">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="choices" type="TypeMyEnum" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="TypeMyEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="ALPHA_1_0_0"/>
<xs:enumeration value="BETA_2_0_0"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
默认情况下,xjc将创建一个名为FooBar.java的文件和一个名为TypeMyEnum.java的文件。注意xjc&#34; ate&#34; Foo_Bar中的下划线。此外,默认情况下,TypeMyEnum的内部结构如下所示:
ALPHA_1_0_0,
BETA_2_0_0;
要在Foo_Bar中获得下划线,我必须使用绑定文件,如下所示:
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb">
<jxb:globalBindings underscoreBinding="asCharInWord"/>
</jxb:bindings>
现在,代码会根据需要生成一个Foo_Bar.java文件,但可怕地将TypeMyEnum的内部更改为:
@XmlEnumValue("ALPHA_1_0_0")
ALPHA___1___0___0("ALPHA_1_0_0"),
@XmlEnumValue("BETA_2_0_0")
BETA___2___0___0("BETA_2_0_0");
private final String value;
似乎枚举值中的每个下划线都更改为三个下划线。这很容易重现,而且超出了我为什么xjc会这样做。
有没有办法让xjc在类名中保留下划线(即Foo_Bar.java)并生成一个合理的枚举文件?我不想进入为我的架构中的每个枚举生成特定绑定的业务。