我在我的服务器代码上使用JAX-RS Jersey和JAXB来实现服务。我发送xml作为资源的输入,在资源中我使用JAXBContext将xml转换为对象。当xml由一个根元素组成时,我的资源正在工作。 喜欢
<employee>
<id>1</id>
</employee>
但是当我提供多个元素时,我得到的是UnmarshalException。
<employee>
<id>1</id>
</employee>
<employee>
<id>2</id>
</employee>
我的资源看起来像这样。
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response addEmp(@Context HttpServletRequest req)throws JAXBException,IOException{
JAXBContext jaxb = JAXBContext.newInstance(Employee.class);
Employee emps = (Employee)jaxb.createUnmarshaller().unmarshal(req.getInputStream());
emplist.add(emps);
return Response.ok().entity(success).build();
答案 0 :(得分:0)
首先,不要使用req.getInputStream()
。而是将输入流指定为函数的参数:
public Response addEmp(InputStream stream) {
其次,您的输入XML不是有效文档。 XML必须有一个根元素。您不能在一个输入流中提供一些元素。相反,请使用JAXB wrapper。