我通过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的命名空间检查?
答案 0 :(得分:2)
如果您使用jaxb-plugin生成了绑定,那么应该有一个'package-info.java'。
例如:
@javax.xml.bind.annotation.XmlSchema( namespace = "someurl", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED )
如果从注释中删除命名空间,它应该可以工作。