使用JAXB解组编码
我是java新手(来自c#.net背景),正在尝试上述示例以编组和解组。使用JAXB解组编码
以下使用如由Mr.Blaise Doughan提到的上述技术下面 Marshalling a List of objects implementing a common interface, with JaxB
链路,我能够封送java对象到XML。但是,当我保存这个XML,并尝试解组XML回到java对象我得到的控制台上执行以下操作:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:2个 计数IllegalAnnotationExceptions @ javax.xml.bind.annotation.XmlElementRef注释在两个 的地方找到;一个就足够了。此问题与以下 位置有关:at @ javax.xml.bind.annotation.XmlElementRef(name = ## default, required = true,type = class javax.xml.bind.annotation.XmlElementRef $ DEFAULT,namespace =)at public java.util.List Community.getPeople()在社区这个问题是 与以下位置相关:at @ javax.xml.bind.annotation.XmlElementRef(name = ## default, required = true ,类型= A类 javax.xml.bind.annotation.XmlElementRef $ DEFAULT,命名空间=)处社区公共 无效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;
}
}
更多信息
你好Mr.Blaise Doughan 代码如下: 它几乎与我所看到的相同在参考链接: http://stackoverflow.com/questions/4144296/marshalling-a-list-of-objects-with-jaxb/8266451#8266451 但现在我正在解编... JAXBContext jaxbContext = JAXBContext.newInstance(Community.class); \t \t \t Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); \t \t \t Community a = (Community) unmarshaller.unmarshal(new File("FILE path of XML"));
是的,我已注释getPeople和setPeople方法。 –
你好,先生, 你当场... !! 一切工作顺利后我一直注释仅适用于吸气而不是制定者Person类 解组代码: - JAXBContext jaxbContext = JAXBContext.newInstance(Community.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Community a = (Community) unmarshaller.unmarshal(new File("XMLFilePath")); \t List
–
回溯到什么地方出了错......控制台输出给的什么是错的线索...但由于即时通讯新的Java是不能够了解编译器提示... 感谢您的帮助Sir @Blaise Doughan。 将您的评论标记为答案...! -jatin –
它更容易帮助,如果你表现出你的代码...
的问题似乎是,你有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; }
}
Hello @hage代码如下:它与我在参考链接中看到的几乎相同:stackove rflow.com/questions/4144296/...但现在我正在解编... JAXBContext jaxbContext = JAXBContext.newInstance(Community.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Community a = (Community) unmarshaller.unmarshal(new File("FILE path of XML"));
和是的我已注释getPeople和setPeople方法都 –
看一看 “官方” 的例子:http://docs.oracle.com/javaee/ 5/tutorial/doc/bnbah.html – Kai