Собственно с чем я столкнулся...
Что у меня имеется:
1) soapUI бесплатный
2) xml soap-запроса
3) xml soap-ответа
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <cli:getClientProductsResponse xmlns:cli="http://spb.localhost.ru/CMA/ClientProductWS"> <cli:clientProductsContainer> <cma:systemCode xmlns:cma="http://spb.localhost.ru/CMA">HMR</cma:systemCode> <cma:isError xmlns:cma="http://spb.localhost.ru/CMA">false</cma:isError> <cma:clientProductsResult xmlns:cma="http://products.localhost.net/CMA"> <cma:creditLoan> <cma:contractNumber>1</cma:contractNumber> <cma:productName>0-1-0</cma:productName> ... </cma:creditLoan> <cma:creditLoan> <cma:contractNumber>2</cma:contractNumber> <cma:productName>0-2-0</cma:productName> ... </cma:creditLoan> <cma:creditLoan> <cma:contractNumber>3</cma:contractNumber> <cma:productName>0-3-0</cma:productName> ... </cma:creditLoan> ... </cma:clientProductsResult> </cli:clientProductsContainer> <cli:clientProductsContainer> <cma:systemCode xmlns:cma="http://spb.localhost.ru/CMA">TW</cma:systemCode> <cma:isError xmlns:cma="http://spb.localhost.ru/CMA">false</cma:isError> <cma:clientProductsResult xmlns:cma="http://products.localhost.net/CMA"/> </cli:clientProductsContainer> <cli:clientProductsContainer> <cma:systemCode xmlns:cma="http://spb.localhost.ru/CMA">SBA</cma:systemCode> <cma:isError xmlns:cma="http://spb.localhost.ru/CMA">true</cma:isError> </cli:clientProductsContainer> </cli:getClientProductsResponse> </soapenv:Body> </soapenv:Envelope>
4) XPath Assertion:
declare namespace cli='http://spb.localhost.ru/CMA/ClientProductWS'; //cli:clientProductsContainer[1]select from current которого выдает ответ:
<cli:clientProductsContainer> <cma:systemCode xmlns:cma="http://spb.localhost.ru/CMA">HMR</cma:systemCode> <cma:isError xmlns:cma="http://spb.localhost.ru/CMA">false</cma:isError> <cma:clientProductsResult xmlns:cma="http://products.localhost.net/CMA"> <cma:creditLoan> <cma:contractNumber>1</cma:contractNumber> <cma:productName>0-1-0</cma:productName> ... </cma:creditLoan> <cma:creditLoan> <cma:contractNumber>2</cma:contractNumber> <cma:productName>0-2-0</cma:productName> ... </cma:creditLoan> <cma:creditLoan> <cma:contractNumber>3</cma:contractNumber> <cma:productName>0-3-0</cma:productName> ... </cma:creditLoan> ... </cma:clientProductsResult> </cli:clientProductsContainer>
Что нужно:
Сформировать условие анализа soap-ответа только по значениям (так сказать 3 условия):
<cma:systemCode xmlns:cma="http://spb.localhost.ru/CMA">HMR</cma:systemCode> <cma:isError xmlns:cma="http://spb.localhost.ru/CMA">false</cma:isError>
<cma:systemCode xmlns:cma="http://spb.localhost.ru/CMA">TW</cma:systemCode> <cma:isError xmlns:cma="http://spb.localhost.ru/CMA">false</cma:isError>
<cma:systemCode xmlns:cma="http://spb.localhost.ru/CMA">SBA</cma:systemCode> <cma:isError xmlns:cma="http://spb.localhost.ru/CMA">true</cma:isError>
Какая возникла сложность:
1. Каким либо образом возможно эти 3 условия указать в одном XPath Assertion?
2. Для первого условия заранее неизвестно сколько вернется
<cma:creditLoan> ... </cma:creditLoan>
Как обрезать условие
<cma:systemCode xmlns:cma="http://spb.localhost.ru/CMA">HMR</cma:systemCode> <cma:isError xmlns:cma="http://spb.localhost.ru/CMA">false</cma:isError>от
<cma:creditLoan> ... </cma:creditLoan>???