我想从Jmeter中给定的xml响应中提取所有orderNumber值

时间:2017-11-16 08:54:58

标签: regex xml jmeter cdata

我想从JMeter

中的给定XML响应中提取所有orderNumber值

正在使用的正则表达式:orderNumber=(".*?")

XML:

     <?xml version="1.0" encoding="UTF-8"?>
    <ReportExecuted ReportId="4130" >
           <DisplayName>Partner Asset - Landing Page (No Glis Orders) Descending</DisplayName>
           <ExecutedBy>admin</ExecutedBy>
           <ExecutionTime>Thu Nov 16 07:32:29 UTC 2017</ExecutionTime>
           <PageNumber>1</PageNumber>
           <PageSize>10</PageSize>
           <DisplayRecords>1 to 10</DisplayRecords>
           <TotalRecords>1000</TotalRecords>
           <ReportContent>
                          <![CDATA[
    <partnerAssetLandingPage orderNumber="AutoSoapEONID11486" orderDate="2017-07-20T00:00:00"/><partnerAssetLandingPage orderNumber="AutoOrder101" orderDate="2016-11-04T00:00:00"/>

                          ]]>
              </ReportContent>
           </ReportExecuted>

运行Jmeter后的响应: 我只获得第一个订单号值,但我希望所有订单没有值

1 个答案:

答案 0 :(得分:1)

您的正则表达式没问题,您应该将Match No.更新为-1(或负数),然后按引用名称更新get all the values,例如orderNumber - 使用orderNumber_1,orderNumber_2,...

  

如果匹配编号设置为负数,则处理采样器数据中的所有可能匹配项。变量设置如下:

     

refName_matchNr - 找到的匹配数量;可能是0
  refName_n,其中n = 1,2,3等 - 由模板生成的字符串
  refName_n_gm,其中m = 0,1,2 - 匹配的组n
  refName - 始终设置为默认值
  refName_gn - 未设置
  请注意,在这种情况下,refName变量始终设置为默认值,并且未设置关联的组变量。

您可以使用ForEach Controller

  

它特别适合使用正则表达式后处理器运行。
这可以从先前请求的结果数据中“创建”必要的输入变量。通过省略“_”分隔符,可以使用ForEach控制器通过输入变量refName_g循环遍历组,并且还可以使用形式为refName _ $ {C的输入变量循环遍历所有匹配中的所有组。 } _g,其中C是计数器变量。