JAXB编组"非现场"

时间:2016-07-05 13:34:53

标签: java jaxb xmltransient

我有一个名为Ability的类,它继承自抽象类CampaignObject

CampaignObject有一个名为getInfo()的抽象方法。

能力没有自己的信息。如果要求他们提供信息,则应提供其所有者的信息。

当我使用JAXB.marshal(...)来封送时,它会将所有者信息文本包含在每个功能的XmlElement上。使用Ability.getInfo()注释@XmlTransient并没有什么区别。

我该怎么办?

非常感谢。

这样的代码:

@XmlRootElement(name = "ability")
public class Ability extends CampaignObject {


    private String val;
    private Hero owner;

    ...

    @Override
    @XmlTransient
    public String getInfo() {
       return getOwner().getInfo();
    }

    @XmlAttribute
    public String getVal() {
        return val;
    }

    @XmlTransient
    public Hero getOwner() {
        return owner;
    }

2 个答案:

答案 0 :(得分:0)

尝试将@XmlAccessorType(XmlAccessType.NONE)添加到您的类中,以确保除了您为映射添加注释的内容之外,它不会使用任何其他内容,这样您还应该能够删除@XmlTransient注释。

答案 1 :(得分:0)

我已经规避了这个问题。我将is重构/重命名为getInfo(),并为除了能力之外的所有内容提供了新的retrieveInfo()

但是,如果有人知道如何真正解决问题,我仍然愿意学习。