Конвертировать строку XML в SOAPBody - PullRequest
0 голосов
/ 22 мая 2018

Как правильно преобразовать строку XML в SOAPBody.Ниже моя реализация

InputStream is = new ByteArrayInputStream(xmlResponse.getBytes());
SOAPMessage message = MessageFactory.newInstance().createMessage(null, is);
SOAPBody body = message.getSOAPPart().getEnvelope().getBody();

Я получаю [SOAP-ENV: Body: null].xmlResponse является входным параметром для метода.

1 Ответ

0 голосов
/ 09 августа 2018

Сначала, чтобы установить тело xml для SOAPBody, вам необходимо предоставить полную структуру xml (узел конверта и т. Д.), Позже вам нужно удалить только узел заголовка и его дочерние узлы.

Во-вторых, вы устанавливаете тело XML в неправильном слое.Ниже приведен пример:

//This needs be your body xml that you want to set on SOAPBody
InputStream is = new ByteArrayInputStream(xmlResponse.getBytes());

//convert inputStream to Source     
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
dbFactory.setNamespaceAware(true);
DocumentBuilder builder = dbFactory.newDocumentBuilder();
Document document = builder.parse(is);
DOMSource domSource = new DOMSource(document);

//create new SOAPMessage instance       
MessageFactory mf = MessageFactory.newInstance(javax.xml.soap.SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage message = mf.createMessage();
SOAPPart part = message.getSOAPPart();

//Set the xml in SOAPPart 
part.setContent(domSource);
message.saveChanges();


//access the body
SOAPBody body = message.getSOAPPart().getEnvelope().getBody();

//for you to access the values inside body, you need to access the node childs following the structures.
//example
body.getFirstChild();

Я думаю, что это решит вашу проблему.

...