jaxb编组期间创建的重复元素

时间:2018-10-05 13:55:51

标签: java jaxb

使用JAXB编组时,在输出中会创建重复的元素。以下是我的根类。

@XmlRootElement(name="rules")
public class RuleList {

    @XmlElement(name="rule")
    private List<Rule> ruleList;

    public List<Rule> getRules() {
        return ruleList;
    }

    public void setRules(List<Rule> ruleList) {
        this.ruleList = ruleList;
    }

}

这将创建重复项。例如,如果我在列表中有2个条目,它将在输出xml中创建4个条目。

2 个答案:

答案 0 :(得分:0)

RuleList的getRules(..)方法正在复制记录。 将其更改为仅rules(),即删除 get 即可解决问题。

答案 1 :(得分:0)

在您的课程中添加以下注释:

@XmlAccessorType(XmlAccessType.FIELD)

否则,您的JAXB实现将同时看到getter / setter对和带注释的字段,并假定您的类具有两个属性,并且将同时使用它们。

(您也可以将此注释添加到包含域模型类的软件包中,方法是将其放入包中的package-info.java文件中-则不必将其添加到每个类中)