我有一个返回以下XML的HTTP请求
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<NS1:obterAtividadesResponse xmlns:NS1="http://www.multiplan.com.br/APL/CLIE/SN/BPM/v1">
<atividades>
<atividade>
<instancia>
<idInstancia>2024</idInstancia>
</instancia>
<idAtividade>12887</idAtividade>
<nomeProcesso>Nota Fiscal ao Pagamento - Resumido</nomeProcesso>
<nomeAtividade>Aprovar Pagamento</nomeAtividade>
<statusAtividade>Received</statusAtividade>
<statusInstancia>Active</statusInstancia>
<dataLimite>2017-09-13T16:08:44.994+00:00</dataLimite>
<snapshot>76</snapshot>
<dadosNegocio>
<name>pedido</name>
<value>4500529987</value>
</dadosNegocio>
</atividade>
</atividades>
</NS1:obterAtividadesResponse>
</soapenv:Body>
</soapenv:Envelope>
我尝试使用XPath Extractor提取idAtividade内容并将结果保存在atividadeId变量上,但是它会将其保存在atividadeId_1上,如下面的调试采样器结果中所示:
atividadeId=
atividadeId_1=12887
atividadeId_matchNr=1
我使用以下xpath查询:
//atividades/atividade/idAtividade/text()
有没有办法让它在我需要的时候起作用?
由于
答案 0 :(得分:1)
您应该选中Return entire XPath fragment instead of text content?
复选框。
他们将使用您的表达式获取唯一的文本。请参阅manual。
还要考虑使用正则表达式提取器。
答案 1 :(得分:1)
如果您有多个atividade
实例作为响应,您可以使用以下XPath表达式来获取第一个匹配项:
//atividades/atividade[1]/idAtividade/text()
或者,您可以选择idAtividade
节点值nomeAtividade
等于Aprovar Pagamento
,例如:
//atividades/atividade[nomeAtividade/text()='Aprovar Pagamento']/idAtividade
但是,如果您只有一个atividade
实例,则表达式应该可以正常工作,您可以使用"XPath Tester" mode of the View Results Tree listener进行测试。
有关XPath语法,轴,函数等的全面信息,请参阅XPath Tutorial和XPath Language Reference。
答案 2 :(得分:0)
我的错误,我的测试有一个BeanShell预处理器将atividadeId变量的值设置为空白,我不知道它是在每个采样器后执行的。