Как заставить JAXB выбрать перечисление?

Я пытаюсь преобразовать текст XML в объект Java, но в XML-атрибуте prQueryStatus есть число. Тип поля Java — enum. Есть ли способ для JAXB выбрать мой enum?

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");
    }

}  

КустАтрпркуери:

@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
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно аннотировать свой тип перечисления с помощью @XmlEnum и его константы с @XmlEnumValue, чтобы JAXB знал, как сопоставлять атрибуты XML ("0", "1", "2") с константами перечисления (NONE, ACIK, TUMU):

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

Другие вопросы по теме