0

如何从给定的 XML 响应中读取节点名?我在 readyAPI Groovy 编辑器中使用 xmlSlurper,但无法rom1:RoomType从 xml 响应的代码中获取我想要的值。

def RoomTypes = new XmlSlurper().parseText(responseTestSuite1)

示例 XML 如下

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header/>
   <soap:Body>
      <rom1:GetRoomTypesListResponse xsi:schemaLocation="xsdlocation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rom1="service">
         <rom1:Success/>
         <rom1:Hotels>
            <rom1:Hotel HCode="ABSCD"/>
         </rom1:Hotels>
         <rom1:RoomTypes>
            <rom1:RoomType Code="ROOM">
               <rom1:Name Language="en">Guest room,  King or Queen or Double</rom1:Name>
            </rom1:RoomType>
            <rom1:RoomType Code="GENR">
               <rom1:Name Language="en">Guest room, 1 King</rom1:Name>
            </rom1:RoomType>
           </rom1:RoomTypes>
      </rom1:GetRoomTypesListResponse>
   </soap:Body>
</soap:Envelope>
4

1 回答 1

0

这是您需要的:

//Pass xml string in to below parseText method
println new XmlSlurper().parseText(xml).'**'.findAll { it.name() == 'RoomType'}*.@Code

输出

你得到值列表,即ROOM, GENR作为输出

您可以在线快速尝试Demo

如果您使用的是 ReadyAPI / SoapUI,请使用以下 Script Assertion 而不是单独的 groovy 脚本测试步骤

//check if response is ok
assert context.response,'Resonse is empty'

def pXml = new XmlSlurper().parseText(context.response)
def codes = pXml.'**'.findAll { it.name() == 'RoomType' }*.@Code
log.info codes
于 2017-04-29T06:10:10.883 回答