soapui如何通过在xpath表达式中使用local-name来获取节点列表? [英] soapui how to get the list of nodes by using local-name in xpath expression?

查看:22
本文介绍了soapui如何通过在xpath表达式中使用local-name来获取节点列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 soapui 进行自动化测试.我正在尝试编写一个 xpath 表达式来使用以下 xml 进行属性传输

I am using soapui for automation testing. I am trying to write a xpath expression to do the property transfer with following xml

<snapshots query="after=2014-04-16 12:30:00-0700" mask="op" xmlns="http://ws.example.com/roma/201907" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <AsOf>2014-04-16T19:20:44-07:00</AsOf>
    <offers>
        <offer entityId="6500588"/>
        <offer entityId="6500589"/>
        <offer entityId="6500590"/>
        <offer entityId="6557335">
            <rubber>KJM</rubber>
            <code>B44733</code>
            <offerCode>PA</offerCode>
            <status name="Completed">C</status>
            <startDate basis="GMT-4">2013-04-01</startDate>
            <endDate basis="GMT-4">2014-04-15</endDate>
            <template>
                <sourceKey-Ref entityId="36KTV" code="KPA513C36KTV" uri="/snapshot/sourcekey/36KTV"/>
                <pTemplateCode>PPAKXC</pTemplateCode>
                <panelCode>HPA5LTM</panelCode>
                <itemCode>PA1467</itemCode>
            </template>
            <venue code="28">
                <supervenue>5</supervenue>
            </venue>
            <currencyDetail currency="USD">
                <unitPrice>29.95</unitPrice>
                <numberPayments>1</numberPayments>
            </currencyDetail>
            <hData>
                <legacyScriptCode>300</legacyScriptCode>
                <hpKeycode>189161</hpKeycode>
                <hpProductNumber>014399</hpProductNumber>
                <hpMpgCode>300</hpMpgCode>
            </hData>
        </offer>
        <offer entityId="6557336">
            <rubber>KJM</rubber>
            <code>B44734</code>
            <offerCode>VY</offerCode>
            <status name="Completed">C</status>
            <startDate basis="GMT-4">2013-04-01</startDate>
            <endDate basis="GMT-4">2014-04-15</endDate>
            <template>
                <sourceKey-Ref entityId="36KTV" code="KPA513C36KTV" uri="/snapshot/sourcekey/36KTV"/>
                <pTemplateCode>PPAKXC</pTemplateCode>
                <panelCode>HPA5LTM</panelCode>
                <offerCode>OVYC8UM9</offerCode>
                <itemCode>VY4023</itemCode>
            </template>
            <venue code="28">
                <supervenue>5</supervenue>
            </venue>
            <currencyDetail currency="USD">
                <unitPrice>0.00</unitPrice>
                <numberPayments>1</numberPayments>
            </currencyDetail>
            <hData>
                <legacyScriptCode>947</legacyScriptCode>
                <hpKeycode>189162</hpKeycode>
                <hpProductNumber>602185</hpProductNumber>
                <hpMpgCode>947</hpMpgCode>
            </hData>
        </offer>
        <offer entityId="6557337">
            <rubber>KJM</rubber>
            <code>B44736</code>
            <offerCode>VY</offerCode>
            <status name="Completed">C</status>
            <startDate basis="GMT-4">2013-04-01</startDate>
            <endDate basis="GMT-4">2014-04-15</endDate>
            <template>
                <sourceKey-Ref entityId="36KTV" code="KPA513C36KTV" uri="/snapshot/sourcekey/36KTV"/>
                <pTemplateCode>PPAKXC</pTemplateCode>
                <panelCode>HPA5LTM</panelCode>
                <offerCode>OVYC8UMA</offerCode>
                <itemCode>VY4012</itemCode>
            </template>
            <venue code="28">
                <supervenue>5</supervenue>
            </venue>
            <currencyDetail currency="USD">
                <unitPrice>0.00</unitPrice>
                <numberPayments>1</numberPayments>
                <firstPaymentAmount>0.00</firstPaymentAmount>
                <firstShippingAmount>5.98</firstShippingAmount>
            </currencyDetail>
            <hData>
                <legacyScriptCode>947</legacyScriptCode>
                <hpKeycode>189163</hpKeycode>
                <hpProductNumber>602094</hpProductNumber>
                <hpMpgCode>947</hpMpgCode>
            </hData>
        </offer>
    </offers>
</snapshots>

我希望在 XPath 表达式中使用 local-name() 的所有 hpKeycode.我试过

I would like to have all hpKeycode using local-name() in the XPath expression. I tried

//*[local-name()='hpKeycode']

但这仅给了我第一个节点 189161.这个

but this gives me only the first node which is 189161. This

/*[local-name()='hpKeycode'][2]

也不起作用.任何帮助将不胜感激.

also does not work. Any help would be greatly appreciated.

推荐答案

您可以尝试使用 XQuery.在属性转移步骤中,选择使用 XQuery 复选框,如下图所示.并使用此代码:

You can try with XQuery. In the property transfer step select Use XQuery checkbox as you see in the image below. And use this code:

declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://ws.example.com/roma/201907';
<ns1:offer>
{
  for $id in //*[local-name()='hpKeycode'] return string($id)
}
</ns1:offer>

如果您想避免使用 XQuery,您可以在您的财产转让中添加三个 Transfers,每一个使用:

If you want to avoid the use of XQuery, you can add three Transfers on your property transfer, on each one use:

第一个 ID(///*[local-name()='hpKeycode'])[1]

第二个 ID(///*[local-name()='hpKeycode'])[2]

第三个 ID(///*[local-name()='hpKeycode'])[3]

希望这会有所帮助,

这篇关于soapui如何通过在xpath表达式中使用local-name来获取节点列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆