在RestTemplate中解组时忽略xml命名空间

时间:2016-03-10 06:06:27

标签: java xml spring xsd resttemplate

我通过Spring RestTemplate将XML over HTTP请求发送到外部网关,并且我正在接收XML响应。

为验证响应而提供的XSD具有目标命名空间,但实际响应不包含命名空间前缀。我已经使用XSD生成了Java资源,因此我在获取响应时(在解组过程中)得到以下错误,

ResponseEntity<Response> responseEntity = restTemplate.exchange(endpointURL, HttpMethod.POST, requestEntity,
                Response.class);

例外情况是: -

Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Response"). Expected elements are <{http://securetransport.dw/rcservice/xml}Response>

有没有办法跳过Spring ResponseEntity的命名空间检查?

1 个答案:

答案 0 :(得分:2)

如果您使用jaxb-plugin生成了绑定,那么应该有一个'package-info.java'。

例如:

@javax.xml.bind.annotation.XmlSchema( namespace = "someurl", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED )

如果从注释中删除命名空间,它应该可以工作。