2015-09-30 4 views
0

Я пытаюсь что-то сделать в SoapUi с Groovy, и он не работает.Копировать значения атрибутов на основе атрибута предыдущего узла с Groovy

У меня есть несколько узлов с большим количеством атрибутов, и мне нужно, чтобы извлечь атрибут дочернего узла на основе атрибута родителя

Например:

<library id="82389389"> 
    <book id="123" bookType="SF"> 
     <price id="325" priceValue="5"/> 
    </book> 
    <book id="4741" bookType="History"> 
     <price id="12388" priceValue="15"/> 
    </book> 
    <book id="2626" bookType="Drama"> 
     <price id="12145" priceValue="40"/> 
    </book> 
</library> 

В этом XML мне нужно извлечь priceValue на основе Booktype и использовать его в другом месте (порядок книжных узлов меняется)

Я попытался это, но он не работает:

def response = .../library[1] 

def i=0 
def records = new XmlSlurper().parseText(response) 
def size = records.book.size() 

for (i=0,i<size,i++) 
{ 
    bookType1 = records.book[i][email protected]().value().text(); 
    if (bookType1 == 'History') 
    { 
     def priceValueBook = records.book[i][email protected]().value().text() 
     log.info priceValueBook 
    } 
} 

ответ

0

Это не совсем ясно, в какой момент вы пытаетесь сделать это, но следующий будет работать в SoapUI шаге сценария:

context.expand('${test_step#Response#//*:book[@bookType="History"]/*:price/@priceValue}') 
+0

Это работает и на самом деле делает мою жизнь проще с другими запросами SoapUI. Спасибо! – Vlad