Xpath 根据元素中的特定字符串从jmeter中的xml响应中提取元素

Xpath 根据元素中的特定字符串从jmeter中的xml响应中提取元素,xpath,xml-parsing,jmeter,Xpath,Xml Parsing,Jmeter,我想提取变量(数组)中SFDCProductList的内容。 如何做到这一点 我有以下xml: . . . 10000 非常感谢。您的请求已成功执行。代码PIM 10000 sgfsuifg sjkfbksgfsudf </SFDCProduct> </SFDCProductList> <SFDCProductList> . . . </SFDCProductList> <SFDCProductLis

我想提取变量(数组)中SFDCProductList的内容。 如何做到这一点

我有以下xml: . . . 10000 非常感谢。您的请求已成功执行。代码PIM 10000 sgfsuifg sjkfbksgfsudf

      </SFDCProduct>
   </SFDCProductList>
   <SFDCProductList>
   .
   .
   .
</SFDCProductList>
<SFDCProductList>
   .
   .
   .
</SFDCProductList>
   <TransportInformation>
   .
   .
   .
   </TransportInformation>
</EnhancedServicePrequalResponse>

<EnhancedServicePrequalResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Code>10000</Code>
<Message>Thank You!</Message>
<SFDCProductList>
<SFDCProduct>
<OfferName>XYZ</OfferName>
<OfferDisplayName>New Offer</OfferDisplayName>
<OfferType>New</OfferType>
<EndDate>2021-02-16</EndDate>
<OfferLineItemList>
<OfferLineItem>
<OfferLineItemCategory>Transport Service</OfferLineItemCategory>
<OfferLineItemName>transport</OfferLineItemName>
</OfferLineItem>
<OfferLineItem>
<OfferLineItemCategory>Device</OfferLineItemCategory>
<OfferLineItemName>Billing</OfferLineItemName>
</OfferLineItem>
</OfferLineItemList>
<TransportName>BR</TransportName>
</SFDCProduct>
</SFDCProductList>
<SFDCProductList>
<SFDCProduct>
<OfferName>Upgrade</OfferName>
<OfferDisplayName>Upgrade</OfferDisplayName>
<OfferType>Upgrade</OfferType>
<EndDate>2021-02-16</EndDate>
<OfferLineItemList>
<OfferLineItem>
<OfferLineItemCategory>Transport</OfferLineItemCategory>
<OfferLineItemName>Billing</OfferLineItemName>
</OfferLineItem>
<OfferLineItem>
<OfferLineItemCategory>Device</OfferLineItemCategory>
<OfferLineItemName>Billing</OfferLineItemName>
</OfferLineItem>
</OfferLineItemList>
<TransportName>JR</TransportName>
</SFDCProduct>
</SFDCProductList>
<TransportInformation>
<TransportFeasibilityParameter>
<AvailabilityFlag>true</AvailabilityFlag>
<BusinessAvailabilityFlag>true</BusinessAvailabilityFlag>
<TransportName>BR</TransportName>
</TransportFeasibilityParameter>
<TransportFeasibilityParameter>
<AvailabilityFlag>true</AvailabilityFlag>
<BusinessAvailabilityFlag>true</BusinessAvailabilityFlag>
<TransportName>JR/TransportName>
</TransportFeasibilityParameter>
</TransportInformation>
</EnhancedServicePrequalResponse>
我尝试使用xpath提取器,但它没有将其存储在变量中


我已经使用边界提取器成功地提取了SFDCProductlist,但是作为一个数组,我只想要元素中有“New”关键字的SFDCProductlist

The beanshell Script:

int SFDCProduct_matchNr =vars.get("SFDCProduct_matchNr");

String list="SFDCProduct"+"_"+"SFDCProduct_matchNr";
int SFDCProduct_matchNrvalue=SFDCProduct_matchNr-1;
vars.put("SFDCProduct_matchNr", "SFDCProduct_matchNrvalue");
vars.put("sfdc", "list");enter code here

But still its not assigning the sfdc with SFDCProduct_1 value??

要提取特定边界内的内容,可以使用:

选择作为左边界,选择
作为右边界

将新变量名作为productList放入已创建变量的
名称中,然后在JSR223脚本中作为
${productList}
vars.get(“productList”)
使用

允许用户使用左右边界从服务器响应中提取值。作为后处理器,该元素将在其范围内的每个示例请求之后执行,测试边界,提取请求的值,生成模板字符串,并将结果存储到给定的变量名中。


从您的响应代码来看,似乎有不止一个产品列表

要获取全部,需要在边界提取器中将Match No.设置为-1。然后,使用vars.get{“Product_List_1”}获取特定的

如果您需要一个变量,一种方法是组合不同的数组列表

带RegEx:-(。\d\n)

如果没有看到完整的XML响应,我们就无法给出精确的解决方案,但是对于响应类型,坚持使用它是有意义的

相关的XPath查询应该是这样的:
//SFDCProductList
-它基本上会返回
标记下的所有内容:

如果没有-请使用侦听器的“XPath Tester”模式仔细检查XPath表达式,在某些情况下,您可能需要:

  • 如果响应不是有效的XML/XHTML,请勾选
    使用Tidy
  • 如果响应中有,则需要使用属性声明名称空间,或者使用诸如或函数之类的函数来代替标记名
  • 如果出现任何问题,首先检查jmeter.log文件——在大多数情况下,它包含足够的信息,可以找到问题的根源 参考资料:


    我的回答有帮助吗?我已经更新了实际负载。使用简单的xpath提取器,我可以得到使用以下方法生成的变量总数:SFDCProduct\u matchNr。但我需要在这些变量上设置一个条件/循环,如果有新的子字符串,那么在接下来的步骤中使用该变量“SFDC_Product_1”。我使用了一个while循环,然后是bean shell处理器和正则表达式提取器。while检查SFDCProduct_matchNr的编号,以及变量是否从Regex提取器设置为NEw。Beanshell使用我们想要的SFDCProduct_i分配新变量,正则表达式创建一个变量,如果该变量中存在new,则该变量将存储关键字new。但是它如何不进入while循环呢?while条件是:${uu javaScript(${SFDCProduct\u matchNr})=-1&&${SFDCProduct\u NewOffer}==“New”,)}。我已经用边界提取器成功地提取了SFDCProductlist,但作为数组,我只想要元素中有“New”关键字的SFDCProductlist。有没有一种方法可以将regex和boundary连接起来。非常感谢。我已经使用边界提取器成功地提取了SFDCProductlist,但是作为一个数组,我只想要元素中有“New”关键字的SFDCProductlist。我怎样才能做到这一点?