我正在尝试创建一个SOAP响应,该响应保留每个嵌套节点的名称空间,而不是在根节点中。作为技术栈,SOAP WS使用spring boot ws构建(主要来自本指南:https://spring.io/guides/gs/producing-web-service/)。就我在网上阅读而言,我想要的是jaxb 1行为,并且由于jaxb 2,所有名称空间声明都移到了root元素上,以避免重复/冗余的信息。
示例:
我想要实现的目标:
<root-element xmlns:ns2="http://example.com/nested-element">
<ns2:nested-element xmlns:ns3="http://example.com/another-nested-element">
<ns3:another-nested-element />
</ns2:nested-element>
</root-element>
我会得到什么:
<root-element xmlns:ns2="http://example.com/nested-element" xmlns:ns3="http://example.com/another-nested-element">
<ns2:nested-element>
<ns3:another-nested-element />
</ns2:nested-element>
</root-element>
到目前为止,我尝试了什么:我创建了org.springframework.ws.server.EndpointInterceptor,并在handleResponse上捕获了返回的消息并尝试对其进行处理,但是问题是org.springframework.ws.soap。 saaj.SaajSoapMessage.writeTo(OutputStream outputStream)将名称空间放回到根元素上。
是否可以使用任何配置或可以覆盖的类以实现所需的功能?
谢谢