我正在使用JAX-WS服务。以下是请求类的一部分。SOAP请求XML中的CDATA节
@XmlElement(name = "Answers")
protected String answers;
现在,在实际的SOAP请求中,答案需要在XML中作为CDATA发送。有一个单独的存根类的答案。因此,我将该类的对象编组为xml。我围绕这个在CDATA标签,如下图所示:
xmlstr = "<![CDATA[" + xmlstr + "]]>";
因此,我请求XML应该是这样的:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<!-- Other tags -->
<Answers>
<![CDATA[
<TagOne></TagOne>
<TagTwo></TagTwo>
]]>
</Answers>
</S:Body>
</S:Envelope>
然而,当请求被发送到服务器,从SOAPLoggingHandler,它看起来像这样:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<!-- Other tags -->
<Answers>
<![CDATA[
<TagOne></TagOne>
<TagTwo></TagTwo>
]]>
</Answers>
</S:Body>
</S:Envelope>
由于这个字符的转义,我收到了答复说“无效的答案xml格式”。我有2个问题:
是xmlstr =“”从bean创建CDATA xml的正确方法是什么?如果没有,那么是否有任何标准的方法来做到这一点?
如果我想在不转义的情况下发送请求中的CDATA部分,那么我应该对我的实现进行哪些更改?
让我知道是否有其他需要。
为什么它需要发送一个CDATA部分?数据在XML中的表示方式(在CDATA中如何表示,或者是带有用实体转义的特殊字符的简单表示形式)应该没有关系。 – Henry
可能的重复[如何使用JAXB生成CDATA块?](http://stackoverflow.com/questions/3136375/how-to-generate-cdata-block-using-jaxb) – kolossus