JAXB序列化:具有对内部对象的引用的选项

时间:2015-08-26 07:41:33

标签: serialization jaxb

我们正在序列化大量对象。某些对象具有属性作为对象列表。

我在Texo序列化程序中找到了一个选项,其中这样的对象列表被保存为引用,并且保存了大量空间而不是多次显示相同的对象。如下所示:

<target:LogicalFact id="6022" version="28"
created="2014-12-01T15:53:59.000+0000"       
logicalColumns="#/16651 #/10549 #/17142 #/16898 #/16542 #/16551 #/16832 #/16623 #/17230 #/16645 #/16393 #/16968 #/16575 #/17179 #/17195 #/16717 #/16636 #/16560 #/16410 #/16814 #/16610 #/16691 #/17173 #/16705 #/16838"/> 

在上面的示例中,所有逻辑列都是引用。这通过避免重复信息来节省空间。 JAXB序列化器是否有这样的选项。

1 个答案:

答案 0 :(得分:1)

您最有可能对允许引用对象的@XmlID@XmlIDREF感兴趣。

@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {

    @XmlID
    @XmlAttribute
    private String id;

    @XmlAttribute
    private String name;

    @XmlIDREF
    private Employee manager;

    @XmlIDREF
    @XmlList
    private List<Employee> reports;

    public Employee() {
        reports = new ArrayList<Employee>();
    }

}

请看Blaise Doughan的以下帖子:

http://blog.bdoughan.com/2010/10/jaxb-and-shared-references-xmlid-and.html

上面的代码片段来自这篇文章。