类型为枚举的JAXB元素 [英] JAXB element of type enum
本文介绍了类型为枚举的JAXB元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以我知道如何创建枚举类型,但是当我设置一个元素类型时,元素字段将只是字符串,而不是枚举类型。如何在我的架构中创建一个枚举,并将JAXB生成为一个java枚举类型?
So I know how to create an enum type but when I set an element type to it the element field will just be of type string and not of type enum. How do I create an enum in my schema and have JAXB generate it as a java enum type?
这是我正在做我的枚举类型和元素创建: / p>
This is how I'm doing my enum type and element creation:
<xsd:simpleType name="myEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="MY_ENUM_1"/>
<xsd:enumeration value="MY_ENUM_2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="myEnumElement" type="ns1:myEnum"/>
推荐答案
您可以如下形成XML模式: p>
You could form your XML schema as follows:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.example.com" xmlns="http://www.example.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="myEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="MY_ENUM_1"/>
<xsd:enumeration value="MY_ENUM_2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="local" type="myEnum"/>
<xsd:element name="ref" type="myEnum"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
将导致生成以下枚举:
package com.example;
import javax.xml.bind.annotation.*;
@XmlType(name = "myEnum")
@XmlEnum
public enum MyEnum {
MY_ENUM_1,
MY_ENUM_2;
public String value() {
return name();
}
public static MyEnum fromValue(String v) {
return valueOf(v);
}
}
以下类可以利用枚举:
package com.example;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"local",
"ref"
})
@XmlRootElement(name = "root")
public class Root {
@XmlElement(required = true)
protected MyEnum local;
@XmlElement(required = true)
protected MyEnum ref;
public MyEnum getLocal() {
return local;
}
public void setLocal(MyEnum value) {
this.local = value;
}
public MyEnum getRef() {
return ref;
}
public void setRef(MyEnum value) {
this.ref = value;
}
}
更多信息
- http://blog.bdoughan.com/2011/08/jaxb-and-enums.html
这篇关于类型为枚举的JAXB元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文