Java 如何让JAXB选择枚举?

Java 如何让JAXB选择枚举?,java,xml,enums,jaxb,Java,Xml,Enums,Jaxb,我试图将XML文本转换为Java对象,但是prQueryStatusXML属性中有一个数字。Java字段的类型是enum。JAXB有没有办法选择我的enum Strxml: <custom prQueryStatus="1" ></custom> XmlOperations.deserializeFromXML(): 客户查询: @XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD) @XmlRo

我试图将XML文本转换为Java对象,但是
prQueryStatus
XML属性中有一个数字。Java字段的类型是
enum
。JAXB有没有办法选择我的
enum

Strxml:

 <custom prQueryStatus="1" ></custom>
XmlOperations.deserializeFromXML():

客户查询:

@XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD)
@XmlRootElement(name = CustAttrPrQuery.RootElement)
public class CustAttrPrQuery {

    public final static String RootElement = "custom";

    @javax.xml.bind.annotation.XmlAttribute
    private PrQueryStatus prQueryStatus = PrQueryStatus.NONE;

    public PrQueryStatus getPrQueryStatus() {
        return prQueryStatus;
    }

    public void setPrQueryStatus(PrQueryStatus prQueryStatus) {
        this.prQueryStatus = prQueryStatus;
    }

}
枚举:


您需要使用 和它的常数, 因此,JAXB将知道如何从XML属性(
“0”
“1”
“2”
)映射到枚举常量(
NONE
ACIK
TUMU
):

public static Object deserializeFromXML(Class obj, String strXml) {

    Object result = null;
    JAXBContext jaxbContext;
    try {
        jaxbContext = JAXBContext.newInstance(obj);

        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

        StringReader reader = new StringReader(strXml);

        result = unmarshaller.unmarshal(reader);
        return result;

    } catch (JAXBException e) {
       return new String("-3 JAXB deSerialize Error");
    }

}  
@XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD)
@XmlRootElement(name = CustAttrPrQuery.RootElement)
public class CustAttrPrQuery {

    public final static String RootElement = "custom";

    @javax.xml.bind.annotation.XmlAttribute
    private PrQueryStatus prQueryStatus = PrQueryStatus.NONE;

    public PrQueryStatus getPrQueryStatus() {
        return prQueryStatus;
    }

    public void setPrQueryStatus(PrQueryStatus prQueryStatus) {
        this.prQueryStatus = prQueryStatus;
    }

}
public enum PrQueryStatus {
  NONE,
  ACIK,
  TUMU
}
@XmlEnum
public enum PrQueryStatus {
    @XmlEnumValue("0") NONE,
    @XmlEnumValue("1") ACIK,
    @XmlEnumValue("2") TUMU
}