Я столкнулся с проблемой, когда я должен использовать устаревший клиент веб-служб, разработанный на основе WSDL, который передает фактический XML-запрос в качестве значения единственной переменной в запросе.У веб-службы, которую я сейчас использую, другой WSDL, и я пытаюсь обмануть мой анализатор XML, однако он кодирует мой фактический ответ XML.
Есть ли способ настроить парсер, чтобы запрос:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header/> <soapenv:Body> <request><elemA><elemB>abc</elemB></elemA></request> </soapenv:Body> </soapenv:Envelope>
был изменен на:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header/> <soapenv:Body> <foo> <elemA> <elemB>abc</elemB> </elemA> </foo> </soapenv:Body> </soapenv:Envelope>
Я использую JAX-WS и WebSphere 7.
Заранее спасибо.
Пабло
Мне приходилось сталкиваться с этой ситуацией в прошлом году, и для меня было решение обернуть XML, который шел в мыльном сообщении, в раздел CDATA.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header/> <soapenv:Body> <![CDATA[ <foo> <elemA> <elemB>abc</elemB> </elemA> </foo> ]] </soapenv:Body> </soapenv:Envelope>