我正在尝试将 XML 文本转换为 Java 对象,但 prQueryStatus
XML 属性中有一个数字。 Java 字段的类型是enum
。 JAXB 有没有办法选择我的枚举
?
Strxml:
<custom prQueryStatus="1" ></custom>
错误行:
CustAttrPrQuery custom = (CustAttrPrQuery)XmlOperations.deserializeFromXML(CustAttrPrQuery.class, strXmlCustom);
XmlOperations.deserializeFromXML():
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");
}
}
CustAttrPrQuery:
@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
注释您的枚举类型
及其常数 @XmlEnumValue
,
以便 JAXB 知道如何从 XML 属性("0"
、"1"
、"2"
)映射到枚举常量( 无
、ACIK
、TUMU
):
@XmlEnum
public enum PrQueryStatus {
@XmlEnumValue("0") NONE,
@XmlEnumValue("1") ACIK,
@XmlEnumValue("2") TUMU
}
关于java - 如何让 JAXB 选择枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54310196/