Java 弹簧&x2B;具有相同元素根的JAXB-Unmarshal XML
我使用RestTemplate调用2个不同的Rest API,返回以下XML:Java 弹簧&x2B;具有相同元素根的JAXB-Unmarshal XML,java,xml,spring,jaxb,Java,Xml,Spring,Jaxb,我使用RestTemplate调用2个不同的Rest API,返回以下XML: <response><user>...</user></response> <response><client>...</client></response> 我无法控制API,无法修改响应XML 如何处理两个不同的响应和相同的根元素 谢谢。您可以有一个响应类,其中包含一个用户和一个客户端类,这两个类将是响应根元素中包含
<response><user>...</user></response>
<response><client>...</client></response>
我无法控制API,无法修改响应XML
如何处理两个不同的响应和相同的根元素
谢谢。您可以有一个响应类,其中包含一个用户和一个客户端类,这两个类将是响应根元素中包含的元素。诸如此类:
@XmlRootElement(name = "response")
@XmlAccessorType(XmlAccessType.FIELD)
class Response {
@XmlElement(required = false)
private User user;
@XmlElement(required = false)
private Client client;
}
class User {
}
class Client {
}
如果您知道需要哪种类型的响应,您可以省去
@XmlRootElement
注释,使用一种取类
参数的解组方法。因为您有两个不同的REST API调用,基于调用的REST服务,您可能可以解组(解析)使用RestTemplate.exchange(字符串url、HttpMethod方法、HttpEntity requestEntity、类responseType、对象…uriVariables)对相应classI am的响应;我正在创建RestTemplate并传递消息转换器和要绑定的已知类。如果我将类设置为使用相同的@XmlRootElement名称绑定,则消息转换器将始终使用列表中最后一个设置。
@XmlRootElement(name = "response")
@XmlAccessorType(XmlAccessType.FIELD)
class Response {
@XmlElement(required = false)
private User user;
@XmlElement(required = false)
private Client client;
}
class User {
}
class Client {
}