[英]How do I get JAXB to choose enum?
I'm trying to convert the XML text to a Java object, but there is a number in the prQueryStatus
XML attribute. 我正在尝试将XML文本转换为Java对象,但是
prQueryStatus
XML属性中有一个数字。 The type of the Java field is an enum
. Java字段的类型是一个
enum
。 Is there a way for JAXB to choose my enum
? JAXB是否可以选择我的
enum
?
Strxml: Strxml:
<custom prQueryStatus="1" ></custom>
faulty row: 错误的行:
CustAttrPrQuery custom = (CustAttrPrQuery)XmlOperations.deserializeFromXML(CustAttrPrQuery.class, strXmlCustom);
XmlOperations.deserializeFromXML(): 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: 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;
}
}
enum: 枚举:
public enum PrQueryStatus {
NONE,
ACIK,
TUMU
}
You need to annotate your enum type with @XmlEnum
and its constants with @XmlEnumValue
, so that JAXB will know how to map from XML attributes ( "0"
, "1"
, "2"
) to the enum constants ( NONE
, ACIK
, TUMU
): 您需要使用您的注释枚举类型
@XmlEnum
及其与常量@XmlEnumValue
,使JAXB将知道如何从XML属性映射( "0"
, "1"
, "2"
),以枚举常数( NONE
, ACIK
, TUMU
):
@XmlEnum
public enum PrQueryStatus {
@XmlEnumValue("0") NONE,
@XmlEnumValue("1") ACIK,
@XmlEnumValue("2") TUMU
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.