Я пытаюсь преобразовать объект типа 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>
Может кто-нибудь подсказать, что здесь не так?