如何将 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";
    }

}