1
我有一个包含类似如下结构的几个XSD文件:XJC不会产生内部XS枚举:工会
<xs:complexType name="SomeThing" abstract="false">
<xs:sequence>
<xs:element name="id" type="schema2:SomeIdTypeClass" minOccurs="1" maxOccurs="1"/>
<xs:element name="myType" type="schema1:MyType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="MyType">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="APPLE"/>
<xs:enumeration value="ORANGE"/>
<xs:enumeration value="BANANA"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="OTHER:[a-zA-Z_][a-zA-Z0-9_]*"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
我使用XJC命令来生成控制台上的Java类,而不是Maven的或蚂蚁或任何其他构建工具。
除了这些类型的枚举之外,所有的类似乎都可以很好地生成。使用枚举类型的类只将其引用为String,例如。 Something类包含MyType只作为一个字符串,而不是作为一个ENUM,因为我期望它。
在另一个文件中,我有类似这样的东西,其中Enums生成没有问题,并且引用类将它用作Enums。
<xs:simpleType name="SizeType">
<xs:restriction base="xs:string">
<xs:enumeration value="SMALL"/>
<xs:enumeration value="MEDIUM"/>
<xs:enumeration value="LARGE"/>
</xs:restriction>
我不想交替XSD文件,因为它们不是由自己产生的,我有很多这些元素的一些文件。
我来,我需要使用某种XJB绑定文件的结论,但我想不通,到底我需要在里面写了什么:太
下面给我只有错误”的结果许多目标节点”
<jaxb:bindings version="2.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:bindings schemaLocation="MySchema.xsd" node="/xs:schema">
<jaxb:bindings node="//xs:simpleType[@name='MyType']/xs:union/xs:simpleType">
<jaxb:typesafeEnumClass name="MyType"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
添加多个=‘真’解决了,但仍然不给我我想要的枚举。
编辑: 当我删除的xs:工会,让我有一个正常的xs:简单类型是这样的:
<xs:simpleType name="MyType">
<xs:restriction base="xs:string">
<xs:pattern value="OTHER:[a-zA-Z_][a-zA-Z0-9_]*"/>
<xs:enumeration value="APPLE"/>
<xs:enumeration value="ORANGE"/>
<xs:enumeration value="BANANA"/>
</xs:restriction>
</xs:simpleType>
然后,它按预期工作。如果我不需要,我仍然不想沿着这条路线走下去,编辑模式。必须有一些解决办法。