gpt4 book ai didi

java - 如何禁止枚举类型中的某些枚举值到 XML 表示映射?

转载 作者:行者123 更新时间:2023-11-30 09:16:48 24 4
gpt4 key购买 nike

我使用 @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>

最佳答案

为此,您应该能够使用 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;
}

关于java - 如何禁止枚举类型中的某些枚举值到 XML 表示映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19281799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com