Spring + JAXB - 使用相同的元素根解组XML

时间:2014-06-22 17:35:20

标签: java xml spring jaxb

我使用RestTemplate调用2个不同的Rest API,它们返回以下XML:

<response><user>...</user></response>
<response><client>...</client></response>

在我的申请中,我有两个班级:

@XmlRootElement(name = "response")
class UserResponse {...}

@XmlRootElement(name = "response")
class ClientResponse {...}

我无法控制API,我无法修改响应XML。

如何处理2个不同的响应和相同的根元素?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以改为使用一个包含User和Client类的Response类,而这些类将包含在响应根元素中。这样的事情:

@XmlRootElement(name = "response")
@XmlAccessorType(XmlAccessType.FIELD)
class Response {
    @XmlElement(required = false)
    private User user;
    @XmlElement(required = false)
    private Client client;
}

class User {
}

class Client {
}

答案 1 :(得分:0)

如果您知道您期望的响应类型,则可以不使用@XmlRootElement注释,并使用其中一个采用Class参数的解组方法。