尝试提出一种更加面向对象的方法,从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);
这是解决此类问题的正确面向对象方法吗?