我正在使用 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><myxml>stuff</myxml></StringPayload>
</_0:Message>
</soapenv:Body>
</soapenv:Envelope>
有没有办法确保 Spring WS 不会转义 XML 字符并尊重 CDATA 标记?
我将 Spring WS 与 Apache Camel 一起使用,因此我更喜欢不需要更改/扩展 spring-ws 类的解决方案。