java - 如何在 Websphere 8.5.5 上的 SOAP 响应中发送 CDATA 部分
问题描述
我需要发送带有 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 部分?先感谢您。
解决方案
推荐阅读
- android - 片段中的 Xamarin Android Google 地图错误
- rstudio - 如何在 R Studio Windows 中查看表情符号代码点的图形表示?
- firebase - 我可以将 Firebase Analytic Web SDK 用于 Cordova 应用程序吗?
- r - 直方图:“x”必须是数字
- c# - C# Windows 应用程序在启动时抛出并排错误
- python - Google Colab 不会显示数据框
- python - 为什么我的 python 格式打印出相同的变量而不是两个变量
- sql - SQL 查询对表的多引用
- string - 计算字符串解决方案中的元音
- xcode - 如何在 SwiftUI 中使用带有结构的 if 语句?