2

我正在使用来自具有两个端点的 Web 服务的数据 - 一个是测试端点,另一个是生产端点(我无法修改它)。问题是生产和测试端点在根元素中有不同的“xmlns”。因此,如果 XSD 用于测试,则 JAXB 无法解析 prod 响应,反之亦然。

使用 Spring RestTemplate 和 Jaxb2Marshaller 使用数据。

用于测试的示例文档片段:

<element xmlns="https://example.com/test"

prod 的示例文档片段:

<element xmlns="https://example.com/prod"

允许使用来自两个测试/产品端点的数据的正确方法是什么?

4

1 回答 1

1

首先,抱怨为测试和生产使用不同的命名空间太疯狂了。

然后检查http://blog.bdoughan.com/2012/11/applying-namespace-during-jaxb-unmarshal.html

从生产 XSD 生成架构。对于测试端点,您需要通过添加自定义的org.springframework.http.converter.xml.MarshallingHttpMessageConverter.

您的自定义NamespaceFilter'sstartElementendElement方法应检查您尝试替换的命名空间,并在必要时替换它。

于 2013-10-02T10:23:26.447 回答