gpt4 book ai didi

java - 有没有办法将版本号放入 XStream 生成的 XML 中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:26 33 4
gpt4 key购买 nike

我使用 XStream 序列化我的域对象。

我想在生成的 xml 文件中添加某种版本控制信息,以防我的领域模型发生变化。

有没有办法使用 xstream 来做到这一点?

我希望在根标记 ( <object-stream> ) 中使用名为“version”的参数,但其他任何参数也都不错。

提前致谢。

最佳答案

您可以注册您的转换器,将所需的版本控制标签添加到您的根元素

领域类

class Person {

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

转换器

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;
}
}

测试用例

@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));
}

输出

<person version="0">
<fullname>Davide</fullname>
</person>

更好的解决方案是装饰XStream提供的默认转换器来添加所有域对象的版本控制属性,无需编写一个Converter为他们每个人上课

关于java - 有没有办法将版本号放入 XStream 生成的 XML 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/949082/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com