从SOAPMessage开始时,最简单的方法是使用writeTo方法:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
soapMessage.writeTo(stream);
String message = new String(stream.toByteArray(), "utf-8")
(上面,我假设您的SAAJ实现将使用UTF-8,您可能想要检查).
如果从SOAPBody开始,那么您可能应该使用XML API,看到SOAPBody是org.w3.dom.Element,最简单的方法可能是使用TrAX:
SOAPBody element = ... // Whatever
DOMSource source = new DOMSource(element);
StringWriter stringResult = new StringWriter();
TransformerFactory.newInstance().newTransformer().transform(source, new StreamResult(stringResult));
String message = stringResult.toString();
(对不起,我这里没有我的IDE,无法检查这是否编译,但那应该非常接近).
请注意:序列化的SOAPMessage可能不是原始XML:它可能是MIME结构:如果SOAPMessage实际使用SwA(SOAP With Attachment)或MTOM.但是,SOAPBody绝对是纯XML.