我有一堂课:

@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解组到类中,以便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";
    }

}

10-08 14:16