我有两节课:
public class A {
B refToB;
}
public class B {
A refToA;
}
它们没有唯一的id字段(JAX-B XMLID和XMLIDREF是必需的)。
对象实例:
A a = new A();
B b = new B();
a.refToB = b;
b.refToA = a;
我希望在存储循环/循环依赖项时将a
编组为XML,例如:
<a id="gen-id-0">
<b>
<a ref-id="gen-id-0" />
</b>
</a>
我发现支持这个的框架之一是XStream:http://x-stream.github.io/graphs.html
其他哪些框架支持此功能?
某些JAX-B实现是否支持它?
答案 0 :(得分:2)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。
MOXy 具有@XmlInverseReference
扩展名,用于映射双向关系。
<强> A 强>
import javax.xml.bind.annotation;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class A {
@XmlElement(name="b")
B refToB;
}
<强>乙强>
import javax.xml.bind.annotation;
import org.eclipse.persistence.oxm.annotations.XmlInverseReference;
@XmlAccessorType(XmlAccessType.FIELD)
public class B {
@XmlInverseReference(mappedBy="refToB")
A refToA;
}
<强> XML 强>
以上分类将映射到以下XML
<a>
<b/>
<a>
了解更多信息
答案 1 :(得分:1)
几年前我和Betwixt合作过。他们声称支持,请参阅http://commons.apache.org/betwixt/faq.html#cycles
唉,设置一个简单的测试到目前为止对我来说不起作用,输出只是<A id="1"><B/></A>
,而B中的A指针静默忽略。必须有一些我未能设置的映射选项...