我需要发送xs:string类型的SOAP响应。该元素必须包含CDATA节。默认情况下,Webphere 8.5.5上的JAX-WS实现会转义特殊字符,例如'<''>'或'&',但是客户希望不要将响应转义并包装在CDATA中。
带有字符串元素的对象是由maven使用带注释的wsimport从wsdl生成的:
@XmlElement(name = "messageContent", required = true)
protected String messageContent;
我可以接受包含CDATA部分的请求,并且一切正常。在messageContent中是接受的CDATA的内容,不能转义字符。但是问题是在此对象中发送响应-每次都转义了响应,而且我不知道如何正确添加CDATA部分。
我已经尝试在SOAPHandler和LogicalHandler(其中有效负载类型为javax.xml.transform.Source)中修改响应消息。我已经用cdata部分的新元素替换了原始元素:
Element newEl = document.createElement(origNode.getNodeName());
CDATASection cdata = document.createCDATASection(origNode.getTextContent());
newEl.appendChild(cdata);
origNode.getParentNode().replaceChild(newEl, origNode);
每次输出的SOAP消息都不含CDATA,并且转义了特殊字符。
有没有一种方法可以真正添加输出肥皂消息中存在的CDATA节?预先谢谢你。