如何针对从正则表达式提取器提取的值运行每个循环

时间:2019-07-18 05:09:06

标签: xpath jmeter extractor

问题陈述:在我的API响应中,我得到了相同的xml标记集重复多次,但是具有不同的基础标记值,这些标记也在xml响应中重复。这两个基础值也相互映射。我需要从响应中提取所有映射并将它们写入SQL。我在从API响应中提取映射值时遇到麻烦。

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

以下标记在每个循环中重复多次。我需要为每个<Value>标签获取<Object>标签下存在的两个值。例如,在这种情况下,对于此特定实例,例如“ {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

2 个答案:

答案 0 :(得分:0)

objVal变量中包含xml之后,

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

XPath query用作/Object/Property/Value

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

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

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

答案 1 :(得分:0)

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

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

enter image description here

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

objval_1_g0

objval_1_g2

objval_2_g0

objval_2_g2

objval_3_g0

objval_3_g2

objval_4_g0

objval_4_g2

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