当同一个服务器请求可能返回两个不同的xml响应时,如何处理它?

当同一个服务器请求可能返回两个不同的xml响应时,如何处理它?,xml,jaxb,resttemplate,Xml,Jaxb,Resttemplate,我已经看过很多关于如何在一个响应中解组多个根元素的内容。我的问题有点不同。我需要联系的API设置有点奇怪。即使有错误,服务器也将返回200,但它将以XML格式返回错误消息,如下所示: <?xml version="1.0" encoding="UTF-8"?> <Error> <Number></Number> <Source></Source> <Description></Des

我已经看过很多关于如何在一个响应中解组多个根元素的内容。我的问题有点不同。我需要联系的API设置有点奇怪。即使有错误,服务器也将返回200,但它将以XML格式返回错误消息,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Number></Number>
    <Source></Source>
    <Description></Description>
    <HelpFile/>
    <HelpContext/>
</Error>

然而,预期的反应更像是:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Number></Number>
    <LabelImage></LabelImage>
    <Name></Name>
    <Address1/>
    <Address2></Address2>
    <City></City>
    <State></State>
    <Zip></Zip>
    <LabelSequenceNumber></LabelSequenceNumber>
    <DropOff></DropOff>
    <LogMessage/>
</Response>

我正试图弄清楚如何接受来自同一请求的任何一个响应


我使用JaxB和RestTemplate来处理这些请求和响应。我需要讨论的API是Rest和SOAP的某种糟糕组合,但我无法控制这一部分。

我们通过为表示扩展响应的每个类创建一个接口来解决这个问题。我不知道为什么我以前没有想到这一点,当时我对JaxB的理解是不存在的。当接收到响应时,会检查是否有“Error”一词,如果找到,会将其解组到ErrorResponse类中,否则会将其解组到success响应中