Нужна помощь с кодом JavaScript для разбора ответа xml - PullRequest
0 голосов
/ 22 октября 2019

Использование Mirth Connect 3.7.1. У меня есть канал, который использует пункты назначения для:

1 адресата - HTTP-отправитель использует POST-вызов для получения токена авторизации. Поместите токен в переменную для использования в следующем месте назначения.

2 место назначения - HTTP-отправитель, использующий вызов GET для получения HTTP-ответа в формате XML.

3 место назначения - средство записи SQL используетответ # 2 адресатов, анализирует, отображает проанализированные данные, записывает в базу данных.

У меня проблемы с 3destination ... или может быть между 2 и 3 .... также, обратите внимание, яновый для всего кодирования. Но Mirth дружествен к JavaScript, так что это то, что будет использоваться здесь. Все стандартные, никакие пользовательские библиотеки или что-то в этом роде.

Я получаю ответ от 2destination, и все необходимые мне данные находятся в одном месте XML ... ... что еще хуже,есть повторяющиеся наборы данных, каждый набор которых содержится в фигурных скобках {имя, местоположение, кредит}, {имя, местоположение, кредит}, {имя, местоположение, кредит} и т. д. ...

Выше внутрифигурные скобки - пример ... не фактические части.

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

Я считаю, что я неправильно использовал JSON.parse, а также неправильно использовал parser = new DOMParser ();также неправильно использовался xmlhttp.responseXML;и т. д. ...

Все в JavaScript GRB - это Get Response Body (используется как переменная, равная части XML, гдемой набор данных)

/*
***result is DOMParser is not defined***
var GRB = msg['Body'].toString();
var GRBparser = new DOMParser();
var GRBDOM = GRBParser.parseFromString(GRB, "application/xml");
*/

/*
var GRB = msg['Body'].toString();
GRB = GRB.split('').forEach('{}');
*/

/*
var GRB = msg['Body'].toString().split('{}');
for each('{}') = i = 0; i++;
*/

Опять же, я новичок в этом и ищу некоторую помощь

Было бы идеально, если бы данные приводили к чему-то вроде этого =

nameF: John, nameL: Doe, местонахождение: Университет, дата: 10/11/2019,

nameF: Sara,nameL: Коннер, местоположение: Pixie Land, дата: 10/12/2019,

, вместо этого я получаю следующее ниже *** Это та часть, которая дает мне проблему, все данные есть, язамена фактических данных фиктивными данными, потому что HIPPA =

<HttpResponse><Status>HTTP/1.1 200 OK</Status><Header><Field> 
<Name>Server</Name><Value>Microsoft-IIS/10.0</Value></Field><Field> 
<Name>X-Content-Type-Options</Name><Value>nosniff</Value></Field><Field> 
<Name>Connection</Name><Value>keep-alive</Value></Field><Field> 
<Name>Pragma</Name><Value>no-cache</Value></Field><Field><Name>X- 
Permitted-Cross-Domain-Policies</Name><Value>none</Value></Field><Field> 
<Name>Date</Name><Value>Mon, 14 Oct 2019 18:18:49 GMT</Value></Field> 
<Field><Name>Strict-Transport-Security</Name><Value>max- 
age=31536000</Value></Field><Field><Name>Cache-Control</Name><Value>no- 
cache</Value></Field><Field><Name>Content-Security-Policy</Name> 
<Value>default-src https: 'unsafe-inline' 'unsafe-eval'</Value></Field> 
<Field><Name>X-AspNet-Version</Name><Value>4.0.30319</Value></Field> 
<Field><Name>Vary</Name><Value>Accept-Encoding</Value></Field><Field> 
<Name>Expires</Name><Value>-1</Value></Field><Field><Name>Content- 
Type</Name><Value>application/json; charset=utf-8</Value></Field> 
</Header> 
<Body multipart="no">[{"nameF": "John", "nameL": "Doe", "location": 
"University", "date": "10/11/2019"}, {"nameF": "Sara", "nameL": "Conner", 
"location": "Pixie Land", "date": "10/12/2019"}</Body></HttpResponse

1 Ответ

0 голосов
/ 01 ноября 2019

Сработало следующее ниже.

//GRB = Get Response Body
//Parse GRB = PGRB
//sql_outs = data destined for sql db
var GRB = msg['Body'].toString();
var PGRB = JSON.parse(GRB);
channelMap.put('PGRB', PGRB);

var PGRB_length = PGRB.length;
var sql_outs = "";
sql_outs = sql_outs.concat(" 

(", PGRB [0] .Credit,", ", PGRB [0] .StartDate,", ", PGRB [0] .EndDate," ", "PGRB [0] .IsStruck,", "PGRB [0] .Notes,", "PGRB [0] .StaffAbbrev,", "PGRB [0] .StaffFName,", ", PGRB [0] .StaffId, "", PGRB [0] .StaffLName, "", PGRB [0] .TaskAbbrev, "", PGRB [0] .TaskId, "", PGRB [0] .TaskName ",", PGRB [0] .EndTime,", ", PGRB [0] .StaffNpi,", ", PGRB [0] .StartTime,", ", PGRB [0] .TaskTags);

для(var i = 1; i

channelMap.put ('sql_outs', sql_outs);

...