Проверка данных из местоположения xpath, имеющего несколько данных - PullRequest
1 голос
/ 31 марта 2020

У меня есть XML, как показано ниже, где мне нужно проверить XML с большим количеством данных с такими же именами (индекс добавлен), как показано ниже.

Я не хочу давать отдельный столбец для каждого имени, мобильный и т. Д. c. Таким образом, в Примере я передаю сумму, мужчины, 1212121212,682312; suj, мужчины, 2212121212,682312 **; ** suu, мужчины, 3212121212,682312 ИЛИ Я могу передать в JSON формате

1. What is the best way to do this without using Java Code. 
2. *def strVals=get response/Response/transaction/values 
    And print strVals 
 - Not printing any value 

 <Response>
       <RequestID>1</RequestID>
       <transaction>
          <values>
             <data name="firstName0">sum</data>
             <data name="lastName0">men</data>
             <data name="mobile0">1212121212</data>
             <data name="zip0">682312</data>
             <data name="firstName1">suj</data>
             <data name="lastName1">men</data>
             <data name="mobile1">2212121212</data>
             <data name="zip1">682312</data>
             <data name="firstName2">suu</data>
             <data name="lastName2">men</data>
             <data name="mobile2">3212121212</data>
             <data name="zip2">682312</data>
             <data name="firstName3">ssss</data>
             <data name="lastName3">mmmmmmm</data>
             <data name="mobile3">4212121212</data>
             <data name="zip3">682312</data>
          </values>
       </transaction>
    </Response>

1 Ответ

1 голос
/ 31 марта 2020

Я дам подсказку о том, как динамически построить этот XML, остальное зависит от вас:

* def temp = <values></values>
* def data = [{first: 'John', value: 'foo'}, {first: 'Smith', value: 'bar'}]
* def fun = 
"""
function(x, i){ 
  var path = '/values/data[' + (i + 1) + ']';
  karate.set('temp', path + '/@name', 'firstName' + i);
  karate.set('temp', path, x.value);
}
"""
* karate.forEach(data, fun)
* print temp   

Что приведет к:

<values>
  <data name="firstName0">foo</data>
  <data name="firstName1">bar</data>
</values>
...