我使用@XmlEnum
和@XmlEnumValue
将枚举映射到XML表示(WSDL文件)。我需要省略其中一个枚举值。所以它不会成为WSDL文件的一部分。
我需要省略枚举值NONE。试过这个,但没有用。
@XmlEnum
public enum Title {
@XmlEnumValue("mrs") MRS,
@XmlEnumValue("mrs") MR,
NONE;
..
}
这是生成的WSDL文件。
<xs:simpleType name="title">
<xs:restriction base="xs:string">
<xs:enumeration value="mrs"/>
<xs:enumeration value="mr"/>
<xs:enumeration value="NONE"/> <!-- I need to get rid of this enum value -->
</xs:restriction>
</xs:simpleType>
答案 0 :(得分:2)
您应该可以使用XmlAdapter
。让它在您的枚举和枚举之间转换所需的项目。
import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class TitleAdapter extends XmlAdapter<TitleAdapter.AdaptedTitle, Title>{
@XmlType(name="title")
public enum AdaptedTitle {
@XmlEnumValue("mrs") MRS,
@XmlEnumValue("mrs") MR
}
@Override
public Title unmarshal(AdaptedTitle v) throws Exception {
switch(v) {
case MRS:
return Title.MRS;
case MR:
return Title.MR;
}
return null;
}
@Override
public AdaptedTitle marshal(Title v) throws Exception {
switch(v) {
case MRS:
return AdaptedTitle.MRS;
case MR:
return AdaptedTitle.MR;
}
return null;
}
}
然后将您的Title
枚举更改为:
import javax.xml.bind.annotation.adapters.*;
@XmlJavaTypeAdapter(TitleAdapter.class)
public enum Title {
MRS,
MR,
NONE;
}