不转义 Spring WS SOAP 正文中的字符



我正在使用Java和Spring-ws构建Web服务。它工作正常,除了一件事。

当我组装要放入 SOAP 正文中的有效负载时,我希望包含 CDATA 转义字符串。这就是我希望结果的样子:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_0="http://example.com/ns">
<soapenv:Header/>
<soapenv:Body>
 <_0:Message>
    <_0:StringPayload><![CDATA[<myxml>stuff</myxml>]]></_0:StringPayload>
 </_0:Message>
</soapenv:Body>
</soapenv:Envelope>

但是,Spring-WS 在添加 SOAP 信封时似乎篡改了有效负载。这是我得到的结果:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_0="http://example.com/ns">
<soapenv:Header/>
<soapenv:Body>
 <_0:Message>
    <_0:StringPayload>&lt;myxml>stuff&lt;/myxml></StringPayload>
 </_0:Message>
</soapenv:Body>
</soapenv:Envelope>

有没有办法确保Spring WS不会转义XML字符并尊重CDATA标签?

我正在将Spring WS与Apache Camel一起使用,因此最好使用不必更改/扩展spring-ws类的解决方案。

我使用MOXy和@XmlCDATA注释来生成CDATA内容,实验表明AxiomSoapMessageFactory使用转义的XML内容来获取它(尽管Jaxb2Marshaller似乎产生了正确的CDATA内容)。

但是,它与SaajSoapMessageFactory一起工作得很好。

相关内容

最新更新