Jaxb MOXy取消/封送属于两个不同列表的对象
这是我的设想 我有一个NodeElement类,有两个列表,InLink和Outlink Link类对NodeElement有两个引用,一个用于源,另一个用于目标。Jaxb MOXy取消/封送属于两个不同列表的对象,jaxb,moxy,Jaxb,Moxy,这是我的设想 我有一个NodeElement类,有两个列表,InLink和Outlink Link类对NodeElement有两个引用,一个用于源,另一个用于目标。 @xmlacessortype(xmlacesstype.FIELD) 类节点元素{ @xmlement(name=“link”) @XmlElementWrapper private List inLinks=new ArrayList(); @xmlement(name=“link”) @XmlElementWrapper p
@xmlacessortype(xmlacesstype.FIELD)
类节点元素{
@xmlement(name=“link”)
@XmlElementWrapper
private List inLinks=new ArrayList();
@xmlement(name=“link”)
@XmlElementWrapper
private List outLinks=new ArrayList();
...
}
@XmlAccessorType(XmlAccessType.FIELD)
类链接{
@XmlInverseReference(mappedBy=“inLinks”)
私有节点元素源;
@XmlInverseReference(mappedBy=“outLinks”)
私有节点元素目标;
公共节点元素getSource(){
返回源;
}
公共void集合源(NodeElement源){
this.source=源;
this.source.getInLink().add(this);
}
公共节点元素getTarget(){
回报目标;
}
公共void集合目标(NodeElement目标){
this.target=目标;
this.target.getOutLink().add(this);
}
}
测试类
类测试{
publicstaticvoidmain(字符串args[])抛出jaxbeexception、FileNotFoundException{
//根元素
ContainerElement c=新的ContainerElement();
链接=新链接();
NodeElement目标=新的NodeElement();
NodeElement源=新的NodeElement();
link.setSource(source);
link.setTarget(target);
c、 addChild(target);
c、 addChild(来源);
JAXBContext jc=JAXBContext.newInstance(ContainerElement.class);
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);
marshaller.marshall(c,新文件(XML_模型));
}
}
结果:
427485825424142
427520478709873
427582226289815
427548409900894
427582226289815
显然,我在解组时得到了两个Link实例,每个实例的源或目标都为null,另一个目标/源设置正确
如何修复此问题,以便解组提供一个正确初始化的链接实例?
我曾考虑使用前封送和后封送来解决源和目标之间的关系,但我只是在学习JAXB,因此希望您能提供任何帮助。有两种方法可以用XML表示关系:
@xmlement
)引用的对象表示为子元素@XmlIDREF
)引用的对象用外键表示(请参见:)