SOAPMessage parsing CDATA when SOAP response loaded from String

We load a SOAP response (in the form of a String) into a SOAPMessage object. The SOAP response contains CDATA construct. The string is converted into bytes and using a StreamSource, the content set into the SOAPPart. Til here it is fine.

But, when getting the SOAPEnvelope and SOAPBody from the SOAPPart, CDATA gets parsed and an invalid XML results.

Please, how could I ensure that the original SOAP response loaded remains available when extracting through SOAPEnvelope from the SOAPMessage ?

byte[] buffer = getSMessage().getBytes();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer);
StreamSource streamSource = new StreamSource(byteArrayInputStream);
try {
    initializeSoapMessageFactory();
    setSoapMessage(getMessageFactory().createMessage());
    setSoapPart(getSoapMessage().getSOAPPart());
    getSoapPart().setContent(streamSource);
    OutputStream os = new ByteArrayOutputStream();
    os.write(buffer);
    getSoapMessage().writeTo(os);

    //Till here SOAPPart contains the CDATA
    setSoapEnvelope(getSoapPart().getEnvelope());

    //From here the CDATA gets removed and the content is parsed
    setSoapHeader(getSoapEnvelope().getHeader());
    setSoapBody(getSoapEnvelope().getBody());
 }