我正在尝试使用javax.xml.bind.JAXBContext将org.quartz.JobDataMap类型的对象转换为xml。但是,当我在JobDataMap的地图中放入一些键值对并使用jaxb生成xml时,地图项不会转换为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>
有人可以建议这里出什么问题吗?