【问题标题】:What is the best practice to send XML data embedded in a SOAP message?发送嵌入在 SOAP 消息中的 XML 数据的最佳实践是什么?
【发布时间】:2012-10-01 22:59:23
【问题描述】:

我有一个 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 reference)。

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

  • 解决方案 1:转义所有特殊字符以获得 &amp;lt;&amp;gt;(等等)
  • 解决方案 2:将我的 XML 转换为 base64 并解码 它在我的网络服务中
  • 欢迎提供其他解决方案

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

【问题讨论】:

    标签: java xml soap jax-ws


    【解决方案1】:

    我找到了这个答案:

    Use XmlDocument as param type in the Web-Service, rather than string

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

    【讨论】:

    • 当您掌握 Web 服务合同 (WSDL) 时,这将是最佳选择。但就我而言,我使用的是无法更改的现有服务。
    • 链接已损坏,您能否更新您的答案并提供更多详细信息?
    【解决方案2】:

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

    【讨论】:

    • 谢谢,这对我来说也是最好的解决方案。
    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 2019-08-22
    相关资源
    最近更新 更多