发送嵌入在SOAP消息中的XML数据的最佳实践是什么?

时间:2012-10-11 09:54:05

标签: java xml soap jax-ws

我有一个JAX-WS Web服务,它接受一些基本数据和一个String,它应该包含整个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:转义所有特殊字符以获得&lt;&gt;(除其他外)
  • 解决方案2:在base64中转换我的XML并解码 它在我的网络服务
  • 另一个解决方案欢迎

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我找到了这个答案:

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

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