У меня есть XML, где я хочу Бип оттуда «» RatePlanCode из HotelOption
узла, но хитрость заключается в том, что в пределах HotelOption
узла там должна быть HotelSupplement
«Кодексом». Если есть HotelSupplement
«Код», тогда мы не берем «RatePlanCode» для этого отеля, только те, которые делают. Мой вопрос заключается в том, как выполнить эту проверку, чтобы получить правильный «RatePlanCode»?Как извлечь правильный узел XML через SoapUI
Ниже приведен пример XML, где вы можете увидеть между ними первым HotelOption
нет HotelSupplement
«Кодекса», поэтому мы не берем «RatePlanCode» этот отель, но второй HotelOption
действительно есть HotelSupplement
«Кодекс», поэтому мы принимаем, что 'RatePlanCode.
<soap:Envelope>
<soap:Body>
<HotelAvailResponse>
<AvailabilityRS TimeStamp="2017-02-08T17:07:17.3372275+00:00" IntCode="TLqw0EfFwMZFNlFLjsETG67d66mZhioSdJ4oCcM1Hao=">
<Results>
<HotelResult>
<HotelOptions>
<HotelOption RatePlanCode="xxxxxxxrEsM=" Status="OK" NonRefundable="false">
<AdditionalElements>
<HotelOffers>
<HotelOffer>
<Description></Description>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
</HotelOption>
<HotelOption RatePlanCode="xxxxxxxxxxGQjs=" Status="OK" NonRefundable="false">
<AdditionalElements>
<HotelSupplements>
<HotelSupplement Code="202964">
<Name>Bed&Breakfast</Name>
</HotelSupplement>
</HotelSupplements>
<HotelOffers>
<HotelOffer>
<Description></Description>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
</HotelOption>
</HotelOptions>
</HotelResult>
</Results>
</AvailabilityRS>
</HotelAvailResponse>
</soap:Body>
</soap:Envelope>
Ниже работает статическая версия, но она должна быть динамичной, так что если есть еще отели в другом примере, мы берем одну RatePlanCode, что соответствует нашим критериям. Этот код сохраняется в свойстве.
import groovy.xml.XmlUtil
def response = testRunner.testCase.getTestStepByName("GetHotelAvailability").getProperty("Response").getValue();
def xml = new XmlParser().parseText(response)
def RatePlanCode = xml.'soap:Body'.HotelAvailResponse[0].AvailabilityRS[0].Results[0].HotelResult[0].HotelOptions[0].HotelOption[1][email protected]
testRunner.testCase.setPropertyValue('RatePlanCode', RatePlanCode)
Спасибо
Что делать, если у вас нет 'HotelSupplement' в любом' HotelOption'? или несколько HotelOption имеют HotelSupplement? – Rao
Если в отеле HotelOption нет отелей, тогда мы не берем тарифный план для этого отеля. Для нескольких HotelOption есть HotelSupplement, выберите случайный тарифный план из одного из этих HotelOptions. На самом деле вы можете привести два примера: один выбор случайных и один выбор всех из них, а затем я решу позже, какой из них использовать? – Gudatama