我正在使用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