Java 从JAXB(WebService)生成XML时出错

Java 从JAXB(WebService)生成XML时出错,java,web-services,jaxb,marshalling,Java,Web Services,Jaxb,Marshalling,我有以下代码返回Foo @GET @Produces (MediaType.APPLICATION_XML) public Foo getXML (){ System.out.println ("getXML Request"); Foo f = new Foo(); d.setA("test"); d.setB("xyxyx"); return f; } 我的Foo课程是 @XmlRootElement public class Foo{ p

我有以下代码返回
Foo

@GET
@Produces (MediaType.APPLICATION_XML)
public Foo getXML (){
    System.out.println ("getXML Request");
    Foo f = new Foo();
    d.setA("test");
    d.setB("xyxyx");
    return f;
}
我的
Foo
课程是

@XmlRootElement
public class Foo{

    public void setA(String a) {
        this.a = a;
    }

    public void setB(String b) {
        this.b = b;
    }

        public String getB (){
           return b;
        }

        public String getA (){
           return a;
        }

    @XmlAttribute(name="atrribB")
    private String b;

    @XmlElement(name="elementA")
    private String a;

}
在执行此操作时,我在
Foo
上得到一个错误,即
类有两个同名的属性“A”
,而
B
也有相同的属性


当我删除这两个属性的
getters
方法时,一切都很好。我是否应该不创建getter setter并将字段保留为public

您需要对get方法进行注释

@XmlRootElement
public class Foo{

    public void setA(String a) {
        this.a = a;
    }

    public void setB(String b) {
        this.b = b;
    }

    @XmlAttribute(name="atrribB")
    public String getB (){
       return b;
    }

    @XmlElement(name="elementA")
    public String getA (){
       return a;
    }

    private String b;

    private String a;

}
或者指定
@xmlacessortype(xmlacesstype.FIELD)

了解更多信息


它是否同时出现在get/set字段上?因为我将在某个时候使用这个类来生成/接收XML。就在其中一个get或set方法上。我已经更新了我的答案来证明这一点。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo{

    public void setA(String a) {
        this.a = a;
    }

    public void setB(String b) {
        this.b = b;
    }

    public String getB (){
       return b;
    }

    public String getA (){
       return a;
    }

    @XmlAttribute(name="atrribB")
    private String b;

    @XmlElement(name="elementA")
    private String a;

}