Получение значений атрибутов из узлов XML с пространством имен в soapui с использованием groovy - PullRequest
0 голосов
/ 08 января 2019

Ниже мой xml, и я хочу получить значение атрибута, используя язык Groovy, чтобы я мог использовать его в утверждении SoapUI

<testns:TestResult attr1="100" attr2:"Sample">
  <testns:TestToken>XXXXXX</testns:TestToken>
</testns:TestResult>

Я хочу получить значения attr1 и attr2.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Как правильно ответил Гуарав, я хотел бы добавить одну вещь. Я думаю, вопрос заключается в том, как получить значения из XML, когда задействованы пространства имен. Пожалуйста, обратитесь образец кода ниже

def holderRawReqToken = groovyUtils.getXmlHolder(response1.toString()) 
holderRawReqToken.declareNamespace('dns4','http://Yournamespaceurl') 
holderRawReqToken.declareNamespace('dns3','http://Yournamespaceurl') 
holderRawReqToken.declareNamespace('soapenv','http://schemas.xmlsoap.org/soap/envelope/') 
responseVaIdToken = holderRawReqToken.getNodeValue("/soapenv:Envelope[1]/soapenv:Body[1]/dns3:CreateTokenResponse[1]/dns4:tokenInformation[1]/dns4:tokenValue[1]/text()")
0 голосов
/ 09 января 2019

Есть 2 проблемы в XML, и он недействителен

 attr2:"Sample" should be attr2="Sample"
 testns is not declared , it should be xmlns:testns="http://www.sample.com

Итак, правильный XML:

     <testns:TestResult xmlns:testns="http://www.sample.com" attr1="100" attr2="Sample">
          <testns:TestToken>XXXXXX</testns:TestToken>
     </testns:TestResult>
Предположим, что имя этого XML - ** Request1 **

поэтому код Groovy, который может получить атрибут:


def req=groovyUtils.getXmlHolder("Request1#Request")

def attr1=req.getNodeValue("//*:TestResult/@attr1")
log.info "Value of attr1 is " + attr1

def attr2=req.getNodeValue("//*:TestResult/@attr2")
log.info "Value of attr2 is " + attr2
Код, который может получить атрибут: xpath ** // *: TestResult / @ attr2 **

если XML хранится в ответе, вы можете использовать Request1 # Response вместо Request.

Дополнительно, если вы хотите получить значение между тегами, используйте код ниже

 def testtoken=req.getNodeValue("//*:TestResult/*:TestToken")
 log.info "Value of testtoken is " + testtoken

enter image description here

...