3

JavaとSpring-wsを使用してWebサービスを構築しています。1つを除いて、正常に動作しています。

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タグを尊重しないようにする方法はありますか?

私はSpringWSをApacheCamelと一緒に使用しているので、spring-wsクラスを変更/拡張する必要がないソリューションが好まれます。

4

1 に答える 1

3

私はMOXyと@XmlCDATAアノテーションを使用してCDATAコンテンツを生成しましたが、実験により、AxiomSoapMessageFactoryがエスケープされたXMLコンテンツでそれを再現することが示されました(Jaxb2Marshallerは正しいCDATAのものを生成するようですが)。

ただし、SaajSoapMessageFactoryでは問題なく動作します。

于 2012-05-09T12:43:44.330 に答える