【问题标题】:SOAPUI XPath specific value property transferSOAPUI XPath 特定值属性传输
【发布时间】:2014-06-05 10:25:11
【问题描述】:

我有一个响应,其中返回了许多值。我只想转移一个特定的值。我该怎么办?

<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>

&lt;item&gt; 标签中,我只想传输pmId。我该如何在 SoapUI 中解决这个问题?

非常感谢

【问题讨论】:

    标签: xml json xpath soapui


    【解决方案1】:

    在纯 XPath 中,你可以使用这个表达式

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

    lookupData 中找到item 元素,其中keyCREDITCARD,并提取,"pmId":"","defaultPM" 之间的字符串

    您也可以尝试使用 XPath 直接读取 JSON,因为 SOAPUI converts JSON to XPath。将 JSON 转换为 XML,路径将是 //lookupData/entry[key="CREDITCARD"]/value/item/pmId

    【讨论】:

      【解决方案2】:

      您在 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)
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多