我正在通过 Spring RestTemplate 将 XML over HTTP 请求发送到外部网关,我正在接收返回的 XML 响应。
用于验证响应的 XSD 具有目标命名空间,但实际响应不包含命名空间前缀。我已经使用 XSD 生成了 Java 资源,因此我在从(解码过程中)获得响应时遇到错误,
ResponseEntity<Response> responseEntity = restTemplate.exchange(endpointURL, HttpMethod.POST, requestEntity,
Response.class);
异常(exception)情况是:-
Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Response"). Expected elements are <{http://securetransport.dw/rcservice/xml}Response>
有什么方法可以跳过 Spring ResponseEntity 的命名空间检查吗?
最佳答案
如果您使用 jaxb-plugin 生成了绑定(bind),则应该有一个“package-info.java”。
例如:
@javax.xml.bind.annotation.XmlSchema(namespace = "someurl", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
如果您从注释中删除 namespace ,它应该可以工作。
关于java - 在 RestTemplate 解码期间忽略 xml 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35908839/