我使用XStream序列化我的domainObjects.
我想在生成的xml文件中添加某种版本控制信息,以防我的域模型发生变化.
有没有办法使用xstream?
我希望在root标签(<object-stream>)中更喜欢名为"version"的参数,但其他任何东西都会很好.
提前致谢.
您可以注册转换器,将所需的版本标记添加到根元素
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
class PersonConverter implements Converter {
public boolean canConvert(Class clazz) {
return clazz.equals(Person.class);
}
public void marshal(Object value,
HierarchicalStreamWriter writer,
MarshallingContext context) {
Person person = (Person) value;
writer.addAttribute("version", "0");
writer.startNode("fullname");
writer.setValue(person.getName());
writer.endNode();
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
Person person = new Person();
reader.moveDown();
person.setName(reader.getValue());
reader.moveUp();
return person;
}
}
Run Code Online (Sandbox Code Playgroud)
@Test
public void versioning() {
Person person = new Person();
person.setName("Davide");
XStream xStream = new XStream(new DomDriver());
xStream.registerConverter(new PersonConverter());
xStream.alias("person", Person.class);
System.out.println(xStream.toXML(person));
}
Run Code Online (Sandbox Code Playgroud)
<person version="0">
<fullname>Davide</fullname>
</person>
Run Code Online (Sandbox Code Playgroud)
更好的解决方案是装饰XStream提供的默认转换器,为所有域对象添加版本控制属性,而无需Converter
为每个域对象编写一个类
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |