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

时间:2016-03-12 21:48:47

标签: java xml jsp model-view-controller jaxb

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

我想要做的是在我的servlet的doGet中,获取此Array List并将内容转换为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();

我得到的是以下错误 - java.lang.Thread.run(Unknown Source) javax.xml.bind.JAXBException

1 个答案:

答案 0 :(得分:0)

这是您遇到问题的地方:

ArrayList arrayList = ...;
mars.marshal(arrayList, sw);

ArrayList(或List或Collection)永远不能充当要编组的内容树的根:它会导致一系列XML元素(由列表元素产生),而这不是有效的XML文档。

最有可能的是,你必须定义一个

class Root {
    List<X> arrayList = ...;
}

并从中创建一个对象,列表作为其字段,并编组。

如果这不符合您的要求,您将不得不提供所需XML的示例,以及列表元素的Java代码,并说明它们之间的相互关系。