无法使用jaxb将org.quartz.JobDataMap转换为xml

时间:2019-01-10 10:46:38

标签: xml jaxb quartz

我正在尝试使用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>

有人可以建议这里出什么问题吗?

0 个答案:

没有答案