嵌套节点的JAXB2命名空间

时间:2018-10-31 07:20:27

标签: java soap jaxb spring-ws

我正在尝试创建一个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)将名称空间放回到根元素上。

是否可以使用任何配置或可以覆盖的类以实现所需的功能?

谢谢

0 个答案:

没有答案