Я решил это, используя аксиому вместо saaj, как предложено в skaffman.
Я использовал axiom-api-1.2.8.jar и axiom-impl-1.2.8.jar для примеракод ниже:
SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope envelope = factory.getDefaultEnvelope();
OMElement xmlElement= factory.createOMElement("search", envelope.getDefaultNamespace());
envelope.getBody().addChild(xmlElement);
OMTextImpl omText = (OMTextImpl) xmlElement.getOMFactory().createOMText(xmlElement, xmlForCdata, XMLStreamConstants.CDATA);
xmlElement.addChild(omText);
System.out.println(envelope.toStringWithConsume());
Кажется, это работает очень хорошо и не конвертирует теги <<в & lt; </p>