Пространство имен JAXB2 для вложенных узлов - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь создать ответ SOAP, который хранит пространство имен для каждого вложенного узла, а не в корневом каталоге. Как технологический стек, SOAP WS построен с использованием пружинной загрузки (в основном из этого руководства: https://spring.io/guides/gs/producing-web-service/). Насколько я читаю в Интернете, мне нужно поведение jaxb 1, а начиная с jaxb 2, все объявления пространства имен идут к корневому элементу, чтобы избежать дублирования / избыточности информации.

Пример:

Чего я хочу достичь:

<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) помещает пространства имен обратно в корневой элемент.

Существуют ли какие-либо конфигурации, которые я могу использовать, или классы, которые я могу переопределить для достижения того, чего я хочу?

Спасибо

...