如何将 JAXB 解组为等效的枚举整数?
How to JAXB Unmarshal an integer into its enum equivalent?
我有一个class:
@Data
@XmlRootElement(name="root")
@XmlAccessorType(XmlAccessType.FIELD)
public class rootClass
{
@XmlElement(name="test")
public FeFiFo test;
}
enum FeFiFo
{
FE,
FI,
FO,
}
还有一个 XML:
<root>
<test>1</test>
</root>
如何将 XML 解组为 class,以便 test
属性 变为 FeFiFo.FI?目前它变为空。
你应该使用 XmlJavaTypeAdapter
rootClass
@Data
@XmlRootElement(name="root")
@XmlAccessorType(XmlAccessType.FIELD)
public class rootClass
{
@XmlJavaTypeAdapter(EnumAdapter .class)
@XmlElement(name="test")
public FeFiFo test;
}
适配器
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class EnumAdapter extends XmlAdapter<String, FeFiFo>
{
public FeFiFo unmarshal(String value) {
//if()
//else if()
//else
return FeFiFo.FE;
}
public String marshal(FeFiFo value) {
//if()
//else if()
//else
return "0";
}
}
我有一个class:
@Data
@XmlRootElement(name="root")
@XmlAccessorType(XmlAccessType.FIELD)
public class rootClass
{
@XmlElement(name="test")
public FeFiFo test;
}
enum FeFiFo
{
FE,
FI,
FO,
}
还有一个 XML:
<root>
<test>1</test>
</root>
如何将 XML 解组为 class,以便 test
属性 变为 FeFiFo.FI?目前它变为空。
你应该使用 XmlJavaTypeAdapter
rootClass
@Data
@XmlRootElement(name="root")
@XmlAccessorType(XmlAccessType.FIELD)
public class rootClass
{
@XmlJavaTypeAdapter(EnumAdapter .class)
@XmlElement(name="test")
public FeFiFo test;
}
适配器
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class EnumAdapter extends XmlAdapter<String, FeFiFo>
{
public FeFiFo unmarshal(String value) {
//if()
//else if()
//else
return FeFiFo.FE;
}
public String marshal(FeFiFo value) {
//if()
//else if()
//else
return "0";
}
}