在我的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
答案 0 :(得分:0)
这是您遇到问题的地方:
ArrayList arrayList = ...;
mars.marshal(arrayList, sw);
ArrayList(或List或Collection)永远不能充当要编组的内容树的根:它会导致一系列XML元素(由列表元素产生),而这不是有效的XML文档。
最有可能的是,你必须定义一个
class Root {
List<X> arrayList = ...;
}
并从中创建一个对象,列表作为其字段,并编组。
如果这不符合您的要求,您将不得不提供所需XML的示例,以及列表元素的Java代码,并说明它们之间的相互关系。