我在使用肥皂中使用的模拟编辑器
在我得到了这个请求:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<methodName xmlns="http://tempuri.org/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<dataAreaId>error</dataAreaId>
<pInvoiceList>
<dataAreaId>NOTTHESAME</dataAreaId>
...
</pInvoiceList>
</methodName>
</s:Body>
</s:Envelope>
我几乎尝试了每个Xpath表达式
什么要填充XPath框?
我尝试了:
- //dataareaid/text()
- //dataareaid/
- //dataareaid
- /dataareaid/text()
- /dataareaid
- /methodName/dataareaid/text()
- /methodName/dataareaid/
- /methodName/dataareaid
我终于根据USER1740631
的答案设法获取了它看来我毕竟与名称空间有关。
正确的语法:
declare namespace tem='http://tempuri.org/';
//tem:methodName/tem:dataAreaId[1]
如果您不关心名称空间,则可以使用以下语法:
xPath1.0
//*[local-name() = 'methodName']/*[local-name() = 'dataAreaId'][1]
xPath2.0
//*:methodName/*:dataAreaId[1]
像这样写
第一个
//methodName [1]/dataareaid [1]
第二个
//methodName [1]/pinvoicelist [1]/dataareaid [1]
*如果您的多个节点在XML中具有相同名称,则应使用数字来定位该特定节点。
有一个很好的提示:定义测试柜的断言(或在模拟窗口中)时,在xpath-expression-field上方有一个按钮"声明"。直到您指出鼠标销钉的指向它,它实际上并不像一个按钮,所以我一开始没有意识到它。
只需单击soapui(实际上我使用5.2.1)的按钮即可为您添加声明仪式,您可以使用。
我发现该功能巧合,因为它并不可见。也许这也可以帮助...