Преобразование строки заголовка и тела SOAP в сообщение SOAP - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь преобразовать две 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...