SOAPUI XPath特定值属性传输

时间:2014-06-05 10:25:11

标签: xml json xpath soapui

我有一个回复,其中包含许多返回的值。我只想传输一个特定的值。我该怎么做?

<lookupData>
    <entry>
        <key>CREDITCARD</key>
        <value>
           <item>{"information":"Master Card","nameOnCard":"John","cardNumber":"558732******5605","cardExpiry":"92016","description":"MASTER CARD  5605","verified":"false","pmId":"DxcyAUk9MEE8REp2U2FgUWRdFmVCFH4RX3NUZH9QZ1MYZQ8\u003d","defaultPM":"false"}</item>
        </value>
    </entry>
</lookupData>

<item>标记中,我只想传输pmId。我如何在 SoapUI 中进行此操作?

非常感谢

2 个答案:

答案 0 :(得分:0)

在纯XPath中,您可以使用此表达式

substring-before(substring-after(//lookupData/entry[key="CREDITCARD"]/value/item, ',"pmId":"'), '","defaultPM"')

item lookupData key CREDITCARD中找到,"pmId":"元素,并在","defaultPM"//lookupData/entry[key="CREDITCARD"]/value/item/pmId之间提取字符串 {1}}。

您也可以尝试使用XPath直接读取JSON,因为SOAPUI converts JSON to XPath。将JSON转换为XML,路径为{{1}}。

答案 1 :(得分:0)

您在XML中嵌入了JSON。我不相信有一种方法可以用纯XPath提取它,除非你想采用像@helderdarocha建议的字符串操作。 你可以在Groovy中做到这一点:

def lookupData = new XmlSlurper().parseText("${context.currentStep.name}#ResponseAsXml")
def item = new JsonSlurper().parseText(lookupData.entry.value.item.toString())
// at this point you can access the value
println item.pmId.value
// so you can do something like
testRunner.testCase.setPropertyValue("prop_name", item.pmId.value)

有可能优化此代码,但我希望你明白这一点。