Присвоение нескольких значений JSON XML-файлу, который возвращается из вызова базы данных по каратэ - PullRequest
0 голосов
/ 10 декабря 2018

Для тестового проекта я делаю вызов в базу данных и получаю необходимые поля, которые я собираюсь установить в своем XML-файле для вызова службы SOAP.

Насколько я вижу,вызов базы данных возвращается в виде значения JSON, поэтому у меня возникли проблемы с присвоением значений частям " some " моих xml .

Допустим, у меня есть a.XML-файл, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xxxxxx>
<soapenv:Header/>
<soapenv:Body>
<int:createSubscriber soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <custBean xxxxx>
        <accountNumber xsi:type="xsd:string">#(accountNo)</accountNumber>
        <custName xsi:type="xsd:string" xs:type="type:string">Xbox</custName>
    </custBean>
    <addSubscriberBean xxxxx>7
        <subscriberID xsi:type="xsd:string">#(subsID)</subscriberID>
        <password xsi:type="xsd:string" xs:type="type:string">0</password>
        <areaID xsi:type="xsd:string" xs:type="type:string">1</areaID>
        <lineOfCredit xsi:type="xsd:int" xs:type="type:int"></lineOfCredit>
        <creditCycle xsi:type="xsd:int" xs:type="type:int"></creditCycle>
        <points xsi:type="xsd:int" xs:type="type:int"></points>
        <bandwidth xsi:type="xsd:int" xs:type="type:int"></bandwidth>
        <physicalPorts xsi:type="xsd:string" xs:type="type:string">8080</physicalPorts>
        <mobilePhoneNo xsi:type="xsd:string" xs:type="type:string">#(mobile)</mobilePhoneNo>
        <stbCount xsi:type="xsd:int" xs:type="type:int">5</stbCount>
        <oTTCount xsi:type="xsd:int" xs:type="type:int">10</oTTCount>
        <subscriptionType xsi:type="xsd:string" xs:type="type:string">#(subsType)</subscriptionType>
    </addSubscriberBean>
    <sequenceID xxxxx>1234567840123422700</sequenceID>
</int:createSubscriber>

А затем я звоню в базу данных, поэтому получаю ответ ниже:

[
{
"ACCOUNT_NO": "123",
"SUBSCRIBER_ID": "123456",
"MOBILE": "123456789",
"SUBSCRIBER_TYPE": "XXXX"
},
{
"ACCOUNT_NO": "456",
"SUBSCRIBER_ID": "456789",
"MOBILE": "456789123",
"SUBSCRIBER_TYPE": "YYYY"
}
]

ИтакУ меня есть 2 возвращенных объекта, как вы можете видеть выше, что означает, что мне нужно динамически присваивать эти значения переменным.

Не удалось найти подсказку, которая привела бы меня к решению, где я мог бы преобразовать свои значения типа JSONназначить их моим переменным на основе XML.

1 Ответ

0 голосов
/ 12 декабря 2018

Цикл по JSON и создание XML .

* def xml = <users></users>
* def fun =
"""
function(u, i) {
  var base = '/users/user[' + (i + 1) + ']/';
  karate.set('xml', base + 'account', u.accountNo);
  karate.set('xml', base + 'mobile', u.mobile);
  karate.set('xml', base + 'type', u.subsType);
}
"""
* eval karate.forEach(users, fun)
...