繁体   English   中英

使用JAXB解组

[英]Unmarshalling using JAXB

我是java新手(来自c#.net背景),并尝试上面的例子来编组和解组。

下面的链接使用JaxB编组实现公共接口的对象列表

使用Mr.Blaise Doughan先生提到的上述技术,我能够将java对象编组为xml。 但是当我保存这个xml并尝试将xml解组回java对象时,我在控制台上得到以下内容:

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:在两个地方找到2个IllegalAnnotationExceptions @ javax.xml.bind.annotation.XmlElementRef批注; 一个就够了。 此问题与以下位置有关:位于@ javax.xml.bind.annotation.XmlElementRef(name = ## default,required = true,type = class javax.xml.bind.annotation.XmlElementRef $ DEFAULT,namespace =)此社区的公共java.util.List Community.getPeople()与以下位置有关:在@ javax.xml.bind.annotation.XmlElementRef(name = ## default,required = true,type = class javax.xml .bind.annotation.XmlElementRef $ DEFAULT,namespace =)在公共无效Community.setPeople(java.util.List)在...

注意:我为Class Boy和Class Girl创建了getters / setter来实现解组。

看来你可能已经注释了getPeople和setPeople方法。 JAXB(和其他Java EE技术)只需要您注释一个。

public class Community {

    private List<Person> people;

    @XmlElementRef
    public List<Person> getPeople() {
        return people;
    }

    public void setPeople(List<Person> people) {
        this.people = people;
    } 

}

欲获得更多信息

如果您显示了代码,则帮助会更容易...

问题似乎是,你有getter和setter并且混淆了JAXB,因为它不知道如何使用它们来解组xml。

尝试使用FIELD访问类型:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="Blubb", namespace=ServiceConstants.XML_NAMESPACE)
public class Blubb implements Serializable {

    @XmlElement(name="Bla", namespace=ServiceConstants.XML_NAMESPACE)
    private Bla bla;

    public Blubb () {

    }

    public void setBla(Bla bla) { this.bla = bla; }

    public Bla getBla() { return this.bla; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM