我有一堂课:
@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";
}
}