1
我有一个xml,我想从HotelOption
节点推出'RatePlanCode',但诀窍是HotelOption
节点中需要有一个HotelSupplement
'代码'。如果有HotelSupplement
'代码',那么我们不会为该酒店采用'RatePlanCode',而只是那个酒店的'RatePlanCode'。我的问题是如何执行此检查,以便取出正确的“RatePlanCode”?如何通过soapui检索正确的xml节点
下面是一个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)
谢谢
如果您在任何'HotelOption'中没有'HotelSupplement',该怎么办?或者多个HotelOption有HotelSupplement? – Rao
如果在HotelOption中没有酒店补充,那么我们不会选择该酒店选项的rateplancode。对于多个HotelOption有HotelSuptionment,请从其中一个HotelOptions中选择一个随机rateplancode。其实你可以提供两个例子,一个挑选一个随机选择一个,然后我会决定使用哪一个? – Gudatama