我正在尝试遵循教程here,似乎在努力进行序列化。当我编组一个对象时,我得到以下输出:
<?xml version="1.0" encoding="UTF-8"?>
<WrapBean>com.lists.beans.ChildBean@2df36f51com.lists.beans.ChildBean@49114668</WrapBean>
我期待更像这样的事情:
<?xml version="1.0" encoding="UTF-8"?>
<WrapBean>
<ChildBean>
<first_name>[name]</first_name>
<last_name>[name[</last_name>
<age>[age]</age>
</ChildBean>
<ChildBean>
...
</ChildBean>
</WrapBean>
这是我的主要方法:
public static void main(String[] args) throws Exception {
JAXBContext context = (JAXBContext) JAXBContext.newInstance(WrapBean.class);
ArrayList<ChildBean> children = new ArrayList<ChildBean>();
ChildBean c1 = new ChildBean();
c1.setFname("larry");
c1.setLname("sanderson");
c1.setAge("13");
children.add(c1);
ChildBean c2 = new ChildBean();
c2.setFname("amber");
c2.setLname("smith");
c2.setAge("11");
children.add(c2);
QName qName = new QName("WrapBean");
WrapBean wrapper = new WrapBean(children);
JAXBElement<WrapBean> jaxbElement = new JAXBElement<WrapBean>(qName, WrapBean.class, wrapper);
marshaller.setProperty(JAXBMarshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(jaxbElement, System.out);
}
如果需要,我可以发布bean类,但是只有setter和getter以及使元素名称正确所需的注释。任何人都可以帮助我解决我所缺少的问题吗?
编辑:我还想提一下,包装器对象与教程完全相同:
public class Wrapper<T> {
private List<T> items;
public Wrapper() {
items = new ArrayList<T>();
}
public Wrapper(List<T> items) {
this.items = items;
}
@XmlAnyElement(lax=true)
public List<T> getItems() {
return items;
}
}
答案 0 :(得分:1)
您需要让JAXBContext
知道集合中的项目。
JAXBContext context = JAXBContext.newInstance(WrapperBean.class, ChildBean.class);