JAXB一个带有几个propOrder的对象

时间:2018-03-14 15:06:24

标签: java jaxb

我有一个这样的对象:

java.lang.NullPointerException

我想用它与2个不同的propOrder:

  • @XmlType(propOrder = {“field1”,“field3”,“field2”})
  • @XmlType(propOrder = {“field3”,“field2”,“field1”})

我正在尝试使用2个新类:

public class Data {  
    protected String field1;  
    protected String field2;  
    protected String field3;

    public getField1(){
        return this.field1;
    }

    public getField2(){
        return this.field2;
    }

    public getField3(){
        return this.field3;
    }

    public setField1(String field){
       this.field1 = field;
    }

    public setField2(String field){
       this.field2 = field;
    }

    public setField3(String field){
       this.field3 = field;
    }
}  

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "field1", "field3", "field2" })
public class DataOne extends Data {  

}  

这个解决方案不起作用,我做错了什么但是什么?

我知道我可以创建2个类而不是扩展一个类,但实际上我有一个包含50个字段的对象,我想使用13个不同的propOrder在XML文件中显示它们。

我试图在网上找到同样的问题而没有成功......有人有想法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我在父节点上使用了这些注释,并使用了一个asbract类而不是一个类。

@XmlTransient
@XmlSeeAlso({ DataOne.class, DataTwo.class })
public abstract class Data {
    ...
}

使用这种架构我有两个对象 DataOne DataTwo ,具有相同的属性,但XML中的顺序不同。

我认为它存在一种正确的方法,但这个解决方案对我来说很好。