如何使用JAXB将ArrayList 转换为XML?

我试图使用JAXB将ArrayList转换为xml ..

ArrayList myList = new ArrayList(); myList = retrieveUserAttributes.getUserBasicAttributes(lastName, retrieveUserAttributes.getLdapContext()); JAXBContext jaxbContext = JAXBContext.newInstance(LDAPUser.class); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); StringWriter sw = new StringWriter(); jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); jaxbMarshaller.marshal(myList, sw); System.out.println(sw.toString()); return sw.toString(); 

…但它不起作用,我收到此错误:

2012年8月27日10:43:58 org.apache.catalina.core.StandardWrapperValve在路径[/ Spring3-LDAP-WebService]的上下文中调用SEVERE:servlet [spring]的Servlet.service()引发exception[请求处理失败; 嵌套exception是javax.xml.bind.JAXBException: 类java.util.ArrayList也不知道它的任何超类。这个上下文。]带有根本原因javax.xml.bind.JAXBException:类java.util.ArrayList也没有它的超级类在这种情况下是已知的。 at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:554)at com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:470) at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:314)at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:243)在javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:96)的ie.revenue.spring.RestController.searchLdapUsersByLastNameTwo(RestController.java:69)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)………..

请帮忙! 谢谢。

尝试创建一个包装列表并使其成为xml根的类,例如:

 @XmlRootElement class LDAPUsers { private List users; ... get ... set ... constructor } 

然后编组LDAPUsers对象。