[英]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.