我们假设,我有一个样本类foo
,其属性为bar
。我已经为JAXB设置了注释,因此我可以将其导出为XML并重新导入它。
@XmlRootElement
public class foo {
private int bar;
@XmlElement()
public int getBar() {
return bar;
}
public void setBar(int bar) {
this.bar = bar;
}
}
XML文件应该看起来像这样:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<foo>
<bar>5</bar>
</foo>
现在我已经了解到,我也可以将bar
作为属性。改为使用@XmlAttribute
会使其看起来像<foo bar="5"/>
,我更喜欢它?
我已经有很多使用旧架构的文件。手动更换它们会非常麻烦,所以我想自动完成。
JAXB是否提供了转换文件的便捷方式?也许解组和编组有不同的注释?如果不付出太多努力,我还能做些什么呢?
答案 0 :(得分:0)
不是JAXB的专家,并且可以提供更优雅的解决方案。但无论如何,这是一个 - 也许不是那么优雅 - 解决方案。
在class foo
中你会改变
@XmlElement()
public int getBar() {
到
@XmlAttribute()
public int getBar() {
然后,您可以继承foo
以解组旧文件
@XmlRootElement
public class foo2 extends foo {
@Override
@XmlElement()
public int getBar() {
return super.getBar();
}
@Override
public void setBar(int bar) {
super.setBar(bar);
}
}
然后可以通过
将foo2
作为超级foo
进行编组
JAXBContext context = JAXBContext.newInstance(foo.class);