具有不同xml名称的相同响应对象

时间:2013-07-08 17:46:22

标签: java xml rest jaxb marshalling

我在服务中编写了两个基于Rest的Web方法:

 Response doSomething() ;

 Response doSomething2()

现在,我想将这些响应编组为两个不同的xml名称。所以,响应看起来像:

 **<doSomethingResponse>**   for doSomething()

 **<doSomething2Response>**   for doSomething2()

这样做的最佳方法是什么。我正在使用jaxB进行编组。

2 个答案:

答案 0 :(得分:1)

您可以利用JAXBElement提供根元素名称。在下面的示例中,我们将使用JAXBElement来创建响应FOO的根节点。

   @GET
    @Produces(MediaType.APPLICATION_XML)
    public Response get() {
        Customer customer = new Customer();
        customer.setFirstName("Jane");
        customer.setLastName("Doe");
        JAXBElement<Customer> jaxbElement = new JAXBElement(new QName("FOO"), Customer.class, customer);
        return Response.ok(jaxbElement).build();
    }

答案 1 :(得分:0)

您可以使用@WebResult@XmlElement注释:

@WebResult(name="doSomethingResponse")
//or
//@XmlElement(name="doSomethingResponse")
Response doSomething();

@WebResult(name="doSomething2Response")
//or
//@XmlElement(name="doSomething2Response")
Response doSomething2();