【问题标题】:How to run for each loop on value extracted from regular expression extractor如何针对从正则表达式提取器提取的值运行每个循环
【发布时间】:2019-07-19 00:56:44
【问题描述】:

问题陈述:在我的 API 响应中,我得到了多次重复的同一组 xml 标记,但底层标记的不同值也在 xml 响应中重复。这两个基础值也相互映射。我需要从响应中提取所有映射并将它们写入 SQL。我无法从 API 响应中提取映射值。

我正在尝试使用正则表达式提取器来获取包含这两个值的重复主标记。然后我尝试在正则表达式提取器的输出变量上使用每个循环。然后将为每次迭代将各自的值写入目标表。

以下标签在每个循环中重复多次。我需要为每个<Object> 标签获取<Value> 标签下的两个值。例如'{abc-def}'和'D12345'在这种情况下对于这个特定的实例......等等。

<Object classId="QueryResultRow"><Property i:type="fn40:SingletonId" propertyId="Id"><Value>{abc-def}</Value></Property><Property i:type="fn40:SingletonString" propertyId="DCN"><Value>D12345</Value></Property></Object>

在保留映射的同时,我无法从每个标记中获取所需的两个值。另外,我不确定如何仅使用正则表达式输出中生成的变量之一,因为它为每个目标 xml 标记创建 4 种类型的变量。

objVal=<Object classId="QueryResultRow"><Property i:type="fn40:SingletonId" propertyId="Id"><Value>{abc-def}</Value></Property><Property i:type="fn40:SingletonString" propertyId="DCN"><Value>D112345</Value></Property></Object>
objVal_g=1
objVal_g0=<Object classId="QueryResultRow"><Property i:type="fn40:SingletonId" propertyId="Id"><Value>{abc-def}</Value></Property><Property i:type="fn40:SingletonString" propertyId="DCN"><Value>D12345</Value></Property></Object>
objVal_g1=<Property i:type="fn40:SingletonId" propertyId="Id"><Value>{abc-def}</Value></Property><Property i:type="fn40:SingletonString" propertyId="DCN"><Value>D12345</Value></Property>

我只需要从这里使用 objVal 并且我正在尝试使用

  1. Regular expression extractor
  2. Flow of my Test
  3. For Each loop to extract object tags
  4. second for loop to extract two values out of extracted object tags
  5. use of variable created in 4th step in my jdbc sampler

【问题讨论】:

    标签: xpath jmeter extractor


    【解决方案1】:

    objVal 变量中有 xml 后,

    使用XPath Extractor 使用JMeter variable Name to use 你的objVal 变量

    XPath query 用作/Object/Property/Value

    如果匹配号是-1,您将获得所有值

    objVal_value={abc-def}
    aa_value_1={abc-def}
    aa_value_2=D112345
    

    允许用户使用 XPath 查询语言从结构化响应(XML 或 (X)HTML)中提取值

    【讨论】:

    • 所以 objVal 将包含所有变量,如 objVal、objVal_g、objVal_g0、objVal_g1。对于所有不同的对象,这将是相同的结构。我必须遍历所有对象,这意味着我将遍历所有对象 4 次,因为每个对象都会生成 4 个变量。我只想循环一个 - “objVal”,否则我最终会在我的结果集中重复。我希望这是有道理的。
    • @vsingh 你不只需要{abc-def}D112345吗?
    • 没错。我只需要提取 {abc-def} 和 D12345 但是会有多个 .响应中的 objectIDs,因此这两个值和 .我需要提取所有这些。这就是为什么我使用 Match no 作为 '-1' 以便在正则表达式提取器中提取所有匹配项并存储在 objval 中。
    【解决方案2】:

    您可以使用下面的正则表达式来获取所需的值。

    propertyId="Id"><Value>(.*?)</Value>(.*)propertyId="DCN"><Value>(.*?)</Value>
    

    这些值将出现在以下变量中。

    objval_1_g0

    objval_1_g2

    objval_2_g0

    objval_2_g2

    objval_3_g0

    objval_3_g2

    objval_4_g0

    objval_4_g2

    您可以使用调试采样器来检查变量值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多