使用 Groovy 根据前面的节点属性复制属性值
Copy attribute values based on a preceding node attribute with Groovy
我正在尝试使用 Groovy 在 SoapUi 中做一些事情,但它不起作用。
我有多个节点有很多属性,我需要根据父节点的属性提取子节点属性
例如:
<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中,我需要根据bookType提取priceValue并在其他地方使用它(书籍节点的顺序正在改变)
我试过了,但没用:
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].@bookType.first().value().text();
if (bookType1 == 'History')
{
def priceValueBook = records.book[i].price.@priceValue.first().value().text()
log.info priceValueBook
}
}
不清楚您在什么时候尝试执行此操作,但以下内容适用于 SoapUI 脚本步骤:
context.expand('${test_step#Response#//*:book[@bookType="History"]/*:price/@priceValue}')
我正在尝试使用 Groovy 在 SoapUi 中做一些事情,但它不起作用。
我有多个节点有很多属性,我需要根据父节点的属性提取子节点属性
例如:
<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中,我需要根据bookType提取priceValue并在其他地方使用它(书籍节点的顺序正在改变)
我试过了,但没用:
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].@bookType.first().value().text();
if (bookType1 == 'History')
{
def priceValueBook = records.book[i].price.@priceValue.first().value().text()
log.info priceValueBook
}
}
不清楚您在什么时候尝试执行此操作,但以下内容适用于 SoapUI 脚本步骤:
context.expand('${test_step#Response#//*:book[@bookType="History"]/*:price/@priceValue}')