API XML до JSON и обратно XML - PullRequest
       1

API XML до JSON и обратно XML

0 голосов
/ 07 февраля 2020

Я использую почтальон для проверки следующего, позже это будет автоматизировано, но это не проблема.

Я запрашиваю данные из API на основе XML и мне нужно использовать те же данные для отправить в другой API в формате XML.

Я уже понял, что мне нужно преобразовать XML в формат JSON, чтобы сохранить его в var. Что работает.

Однако проблема, с которой я столкнулся, заключается в том, что этот процесс создает дополнительные символы в моих данных в виде: [{"$":

Когда я продолжаю преобразование он возвращается к XML (используя полную функцию ниже), он не работает, и я получаю код XML со всем этим. Который не принят в последнем посте к XML Api.

, которого я хочу добиться, чтобы удалить все вхождения и в XML var. Но я думаю, что мне нужно будет избавиться от самого первого шага. [{"$":

Я уже нашел функцию (.replace), которая удаляет ее, но только в первый раз

Функция JSON2 XML

function json2xml(o, tab) {
   var toXml = function(v, name, ind) {
      var xml = "";
      if (v instanceof Array) {
         for (var i=0, n=v.length; i<n; i++)
            xml += ind + toXml(v[i], name, ind+"\t") + "\n";
      }
      else if (typeof(v) == "object") {
         var hasChild = false;
         xml += ind + "<" + name;
         for (var m in v) {
            if (m.charAt(0) == "@")
               xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\"";
            else
               hasChild = true;
         }
         xml += hasChild ? ">" : "/>";
         if (hasChild) {
            for (var m in v) {
               if (m == "#text")
                  xml += v[m];
               else if (m == "#cdata")
                  xml += "<![CDATA[" + v[m] + "]]>";
               else if (m.charAt(0) != "@")
                  xml += toXml(v[m], m, ind+"\t");
            }
            xml += (xml.charAt(xml.length-1)=="\n"?ind:"") + "</" + name + ">";
         }
      }
      else {
         xml += ind + "<" + name + ">" + v.toString() +  "</" + name + ">";
      }
      return xml;
   }, xml="";
   for (var m in o)
      xml += toXml(o[m], m, "");
   return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, "");
   

  
}



// Get the JSON from environment and parse it
let targetJSON = JSON.parse(pm.environment.get('firstTarget'));

// Convert it to XML String
let xmlString = json2xml(targetJSON);

// You can check the console if your string is correct
console.log(xmlString);

// Store the XML string as a variable and use this variable in your request body
pm.environment.set('targetXML', xmlString);

let resp = xml2Json(pm.response.text()),
    targetData = resp.eExact.Accounts;
console.log({ targetData });

pm.environment.set('firstTarget', JSON.stringify(targetData));

Это код, который создает [{"$":

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...