我遇到了从深层嵌套的xsd元素生成枚举的问题。当我在maven构建期间生成代码时,我的枚举是string类型。这是一个例子。
TextBox
从上面的例子中我们将在Car元素中包含另外20个元素,其中包含枚举值名称“Type”。我有一个绑定文件绑定'类型'到jaxb:typesafeEnumClass但它不工作,我仍然得到字符串作为我的枚举类型。这是我绑定的一个例子。
<xs:element name="Car">
<xs:complexType>
<xs:sequence>
<xs:element name="CarModal">
<xs:complexType>
<xs:sequence>
<xs:element name="Type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SomeValue"/>
<xs:enumeration value="AnotherValue"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:completType>
</xs:element>
</xs:sequence>
感谢您的帮助,我无法更改xsd
答案 0 :(得分:0)
我猜你的绑定还不够精确。当您编写 public class BLA
{
[Key]
public int IDin { get; set; }
public int actual { get; set; }
public string code { get; set; }
public DateTime Date { get; set; }
}
时,您基本上会说“我的架构中的任何//xs:element[@name='CarModal']
元素”。接下来,您说您有许多CarModal
元素,因此Type
不够精确。
尝试更精确的表达式,例如
xs:element[@name='Type']/xs:simpleType
接下来,您的绑定会对错误的语法产生一般印象。例如:
xs:complexType/xs:sequence/xs:element[@name='CarModal']/
xs:complexType/xs:sequence/xs:element[@name='Type']/xs:simpleType
是无效的XML(在<jaxb:bindings node="xs:element[@name='Type']/xs:simpleType>
之后缺少"
)。因此可能会出现根本不考虑绑定的情况 - 否则您应该得到错误而不是生成的代码。仔细检查是否应用了绑定。