[英]How to check request value by groovy in SoapUI
我有一個簡單的模擬服務,請求如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fa1="http://TargetNamespace.com/FA1">
<soapenv:Header/>
<soapenv:Body>
<fa1:items>
<fa1:itemname>logo</fa1:itemname>
<fa1:price></fa1:price>
<fa1:vat>10</fa1:vat>
<fa1:description>nové logo</fa1:description>
</fa1:items>
</soapenv:Body>
</soapenv:Envelope>
我使用腳本來控制響應值。 一開始 XmlHolder 不起作用。 所以我用
def req = mockRequest.getContentElement().execQuery("/")
def records = new XmlParser(false, false).parseText(req[0].xmlText())
獲取請求並將其解析為節點。
{http://TargetNamespace.com/FA1}items[attributes={}; value=[
{http://TargetNamespace.com/FA1}itemname[attributes={}; value=[logo]],
{http://TargetNamespace.com/FA1}price[attributes={}; value=[1]],
{http://TargetNamespace.com/FA1}vat[attributes={}; value=[10]],
{http://TargetNamespace.com/FA1}description[attributes={}; value=[nové logo]]]
]
但我無法獲得價格價值。 我試過了
def price = records.price.text()
表達式records.find( { it.text() == "1"} )
返回{http://TargetNamespace.com/FA1}price[attributes={}; value=[1]]
{http://TargetNamespace.com/FA1}price[attributes={}; value=[1]]
但records.find( { it.name() == "price"} )
類似records.find( { it.name() == "{http://TargetNamespace.com/FA1}price"} )
返回空值。
關鍵是使用def records = new XmlParser(
false, false ).parseText(req[0].xmlText())
這帶來了這樣的請求值:
fa1:items[attributes={xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/, xmlns:fa1=http://TargetNamespace.com/FA1}; value=[
fa1:itemname[attributes={}; value=[logo]],
fa1:price[attributes={}; value=[1]],
fa1:vat[attributes={}; value=[10]],
fa1:description[attributes={}; value=[nové logo]]]
]
然后你可以通過名稱namespace:name
讀取值namespace:name
so records.find( { it.name() == "fa1:price"} ).text()
返回1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.