0

我在我的服务器代码上使用 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();
4

1 回答 1

0

首先,不要使用req.getInputStream(). 相反,将您的输入流指定为函数的参数:

public Response addEmp(InputStream stream) {

其次,您的输入 XML 不是有效文档。XML 必须有一个根元素。您不能在一个输入流中给出几个元素。相反,请使用 JAXB包装器

于 2013-01-04T10:05:14.397 回答