Java JAXB unmarshal面向对象

时间:2016-12-13 13:57:39

标签: java xml jaxb

尝试提出一种更加面向对象的方法,从xml解组到我的模型。目前使用某种版本的JAXB来解组字符串xml,我正在调用一些静态方法传递类和字符串并返回一个对象。

 public static Object unmarshallSomething(Class someClass, String xml) throws JAXBException {
        JAXBContext jaxbContext = JAXBContext.newInstance(someClass);
        Unmarshaller unmarshaler = jaxbContext.createUnmarshaller();
        StringReader reader = new StringReader(xml);
        return unmarshaler.unmarshal(reader);
    }

考虑创建一个我的模型可以扩展的类。

public class GenericModel {

    public <T> T  unmarshal(String xml) throws JAXBException {
        JAXBContext jaxbContext = JAXBContext.newInstance(this.getClass());
        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
        StringReader reader = new StringReader(xml);
        return (T) unmarshaller.unmarshal(reader);
    }
}

的usermodel

public class UserModel extends GenericModel
{
//some xml annotations

}

现在我可以像这样创建一个UserMode;

new UserModel().build(xml);

这是解决此类问题的正确面向对象方法吗?

0 个答案:

没有答案