Я пытаюсь преобразовать две xml строки "head" и "body" в Soap Message. Но я получаю дополнительный заголовок soap и тег body в конечном сообщении soap. Как я могу удалить эти дополнительные теги? Ниже приведен фрагмент кода и токовый выход.
String head = "<env:Header xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\r\n" + " <m:reservation xmlns:m=\"http://travelcompany.example.org/reservation\" \r\n" + " env:role=\"http://www.w3.org/2003/05/soap-envelope/role/next\">\r\n" + " <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference>\r\n" + " <m:dateAndTime>2007-11-29T13:20:00.000-05:00</m:dateAndTime>\r\n" + " </m:reservation>\r\n" + " <n:passenger xmlns:n=\"http://mycompany.example.com/employees\" \r\n" + " env:role=\"http://www.w3.org/2003/05/soap-envelope/role/next\">\r\n" + " <n:name>Fred Bloggs</n:name>\r\n" + " </n:passenger>\r\n" + " </env:Header>"; String body = "<env:Body xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\r\n" + " <p:itinerary xmlns:p=\"http://travelcompany.example.org/reservation/travel\">\r\n" + " <p:departure>\r\n" + " <p:departing>New York</p:departing>\r\n" + " <p:arriving>Los Angeles</p:arriving>\r\n" + " <p:departureDate>2007-12-14</p:departureDate>\r\n" + " <p:departureTime>late afternoon</p:departureTime>\r\n" + " <p:seatPreference>aisle</p:seatPreference>\r\n" + " </p:departure>\r\n" + " <p:return>\r\n" + " <p:departing>Los Angeles</p:departing>\r\n" + " <p:arriving>New York</p:arriving>\r\n" + " <p:departureDate>2007-12-20</p:departureDate>\r\n" + " <p:departureTime>mid-morning</p:departureTime>\r\n" + " <p:seatPreference></p:seatPreference>\r\n" + " </p:return>\r\n" + " </p:itinerary>\r\n" + " </env:Body>";
SaajSoapMessage processor(String head, String body) { SaajSoapMessage saajSoapMessage = null; try { Transformer transformer = TransformerFactory.newInstance().newTransformer(); saajSoapMessage = new SaajSoapMessage(MessageFactory.newInstance().createMessage()); transformer.transform(new StreamSource(new StringReader(head)), saajSoapMessage.getSoapHeader().getResult()); transformer.transform(new StreamSource(new StringReader(body)), saajSoapMessage.getSoapBody().getPayloadResult()); } catch (Exception e) { e.printStackTrace(); } return saajSoapMessage; }
Токовый выход:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next"> <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference> <m:dateAndTime>2007-11-29T13:20:00.000-05:00</m:dateAndTime> </m:reservation> <n:passenger xmlns:n="http://mycompany.example.com/employees" env:role="http://www.w3.org/2003/05/soap-envelope/role/next"> <n:name>Fred Bloggs</n:name> </n:passenger> </env:Header></SOAP-ENV:Header><SOAP-ENV:Body><env:Body xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel"> <p:departure> <p:departing>New York</p:departing> <p:arriving>Los Angeles</p:arriving> <p:departureDate>2007-12-14</p:departureDate> <p:departureTime>late afternoon</p:departureTime> <p:seatPreference>aisle</p:seatPreference> </p:departure> <p:return> <p:departing>Los Angeles</p:departing> <p:arriving>New York</p:arriving> <p:departureDate>2007-12-20</p:departureDate> <p:departureTime>mid-morning</p:departureTime> <p:seatPreference/> </p:return> </p:itinerary> </env:Body></SOAP-ENV:Body></SOAP-ENV:Envelope>