Невозможно преобразовать org.quartz.JobDataMap в xml, используя jaxb - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь преобразовать объект типа org.quartz.JobDataMap в xml, используя javax.xml.bind.JAXBContext. Но когда я помещаю некоторую пару ключ-значение в карту JobDataMap и генерирую xml, используя jaxb, записи карты не преобразуются в xml.

Вот мои методы для преобразования в xml и из xml в объект:

public static <T> String ObjectToXml(T t) {
    try {
        JAXBContext jaxbContext = JAXBContext.newInstance(t.getClass());
        Marshaller marshaller = jaxbContext.createMarshaller();
        StringWriter stringWriter = new StringWriter();
        JAXBElement<T> jaxbElement = new JAXBElement<T>(new QName(t.getClass().getName()), (Class<T>) t.getClass(),
                t);
        marshaller.marshal(jaxbElement, stringWriter);
        return stringWriter.toString();
    } catch (JAXBException e) {
        e.printStackTrace();
    }
    return null;
}

public static <T> T XmlToObject(String xml, Class<T> c) {
    try {
        JAXBContext jaxbContext = JAXBContext.newInstance(c);
        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

        JAXBElement<T> jaxbElement = unmarshaller.unmarshal(new StreamSource(new StringReader(xml)), c);
        T tNew = (T) jaxbElement.getValue();
        return tNew;
    } catch (JAXBException e) {
        e.printStackTrace();
    }
    return null;
}

Вот основной класс, из которого я пытаюсь преобразовать объект JobDataMap в xml:

public static void main(String[] args) {
    JobDataMap jobData = new JobDataMap();
    jobData.put("Test", "One");
    jobData.put("TestTwo", "Two");

    String xml = ObjectToXml(jobData);
    System.out.println(xml);
}

Это xml-файл, сгенерированный с помощью приведенного выше кода:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><org.quartz.JobDataMap><allowsTransientData>false</allowsTransientData></org.quartz.JobDataMap>

Может кто-нибудь подсказать, что здесь не так?

...