将Java数组列表转换为XML字符串

将Java数组列表转换为XML字符串,java,xml,jsp,model-view-controller,jaxb,Java,Xml,Jsp,Model View Controller,Jaxb,在我的servlet(getEmployee)中,我创建了我的dao的一个实例(EmployeeDAO),然后创建一个空数组列表(arrayList),并用我的dao中的方法填充它(getTheEmployees) 我试图做的是在servlet的doGet中,获取这个数组列表,并将内容转换为xml字符串。然后,我将在我的jsp页面中获取这个。我知道我需要使用JAXB将其转换为xml字符串,但我无法实现这一点 有没有一个简单的方法可以做到这一点 我正在使用以下代码: JAXBContext

在我的servlet(
getEmployee
)中,我创建了我的dao的一个实例(
EmployeeDAO
),然后创建一个空数组列表(
arrayList
),并用我的dao中的方法填充它(
getTheEmployees

我试图做的是在servlet的doGet中,获取这个数组列表,并将内容转换为xml字符串。然后,我将在我的jsp页面中获取这个。我知道我需要使用JAXB将其转换为xml字符串,但我无法实现这一点

有没有一个简单的方法可以做到这一点

我正在使用以下代码:

    JAXBContext jc = JAXBContext.newInstance(Employee.class);
    Marshaller mars = jc.createMarshaller();    
    mars.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
    StringWriter sw = new StringWriter();
    mars.marshal(arrayList, sw);
    String xmlString = sw.toString();
我得到的只是以下错误-at
java.lang.Thread.run(未知源代码)

javax.xml.bind.JAXBException

这就是您遇到的问题:

ArrayList arrayList = ...;
mars.marshal(arrayList, sw);
ArrayList(或列表或集合)永远不能充当要封送的内容树的根:它将导致一系列XML元素(由列表元素生成),而这不是有效的XML文档

很可能,您必须定义一个

class Root {
    List<X> arrayList = ...;
}
类根目录{
列表arrayList=。。。;
}
并从中创建一个对象,列表作为其字段,并封送它


如果这不符合您的要求,您必须提供所需XML的示例,以及列表元素的Java代码,并描述它们之间的关系。

为什么您不能让JAXB准确工作?添加代码以解释-@bdavies6086