如何使用Groovy获取soapui响应属性值

iszxjhcz  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(165)

我肥皂剧回应:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <GetInventoriesResponse xmlns="http://xxx">
         <GetInventoriesResult>
            <NewDataSet xmlns="">
               <Inventory attr1="1" attr2="101" />
               <Inventory attr1="1" attr2="101" />
            </NewDataSet>
         </GetInventoriesResult>
      </GetInventoriesResponse>
   </soap:Body>
</soap:Envelope>

我想从//库存[0]中读取attr 1的值
我所做的是

import groovy.sql.Sql  
import java.sql.DriverManager  
import java.sql.Connection  
import javax.sql.DataSource  
import java.sql.Driver;  
import java.util.*;  
import java.text.*; 

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )  
def responseHolder = groovyUtils.getXmlHolder( messageExchange.responseContent )

responseHolder.namespaces['ns4']='http://xxx'

def CounGetInventoriesResponse=responseHolder["count(//Inventory)"]
def CompanyId=responseHolder.getNodeValue("//namf:Inventory[0]/@attr1")

log.info "att1"+CompanyId

companyid的值显示为空
我该如何解决这个问题。这里缺少什么

lndjwyie

lndjwyie1#

https://www.w3schools.com/xml/xpath_syntax.asp
检查 predicate 一节
Inventory[1]是引用第一个元素的正确方式
另一个问题-当默认名称空间在NewDataSet元素级别上重置为空时,您正试图访问名称空间为"//namf:InventoryInventory元素:<NewDataSet xmlns="">
这样应该行

responseHolder.getNodeValue("//Inventory[1]/@attr1")

相关问题