java - 一组用于两个相同命名空间的 JAXB 类

标签 java xml jaxb xsd

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

使用 Spring RestTemplate 和 Jaxb2Marshaller 使用数据。

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

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

prod 的示例文档片段:

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

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

最佳答案

首先,提示为测试和生产使用不同命名空间的疯狂行为。

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

从生产 XSD 生成架构。对于测试端点,您需要通过添加自定义 org.springframework.http.converter.xml.MarshallingHttpMessageConverter 配置 RestTemplate 使用的 JAXBContext(用于编码和解码)。

您的自定义 NamespaceFilterstartElementendElement 方法应该检查您尝试替换的命名空间,并在必要时替换它.

关于java - 一组用于两个相同命名空间的 JAXB 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19133252/

相关文章:

java - MongoDB 相当于 WHERE IN(1,2,...)

xml - TSQL Xquery - 您可以选择重复节点的第一个实例吗?

java - 如果字段名称包含一个大写字母后跟下划线,则从 JAXB 带注释的类生成模式会失败

java - JAXB 编码和 DOM 节点的关系

java - 解码 xacml 响应时出错?

Java:静态嵌套类和反射: "$"与 "."

java - Android AlarmManager 执行代码时常无法正常工作

c# - 向 XElement 添加空白行以保留其他格式

python - 解析时转义错误的 XML

java - 设置 Float 格式以显示小数点后 2 位数字