1

我有一个 JAX-WS Web 服务,它接受一些基本数据和一个应该包含整个 XML 文件内容的字符串。第一次我可以把这个 XML 作为 CDATA 部分放在我的 SOAP 请求中,如下所示:

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
    ...
      <contentData>
    <![CDATA[
      <my>
        <xml>
          <here>
            ...
          </here>
        </xml>
      </my>
    ]]>
       </contentData>
       ...
   </soapenv:Body>
</soapenv:Envelope>

但问题是我的 XML 数据也包含一些 CDATA 部分,它不能像这样工作,因为不允许嵌套 CDATA(W3School 参考)。

发送此类数据的最佳做法是什么?

  • 解决方案 1:转义所有特殊字符以便拥有&lt;&gt;(除其他外)
  • 解决方案 2:将我的 XML 转换为 base64 并在我的网络服务中对其进行解码
  • 欢迎另一个解决方案

我看到了这个问题,但是序列化 Java 对象不是一个选项,因为 XML 数据是由另一方生成的。

4

2 回答 2

2

我绝对更喜欢解决方案 2,编码和解码 Base64 格式。

于 2012-10-12T14:39:11.860 回答
1

我找到了这个答案:

在 Web 服务中使用 XmlDocument 作为参数类型,而不是字符串

这就是我正在与之通信的 Web 服务正在使用的。

于 2015-08-19T14:33:31.600 回答