Почему я не могу получить доступ к сообщению xml в Mirth? - PullRequest
1 голос
/ 28 мая 2020

У меня есть канал в Mirth, который получает сообщение XML через HTTP, но когда я пытаюсь получить доступ к атрибутам и полям сообщения, я не могу. Если я копирую и вставляю сообщение в «Отправить сообщение», оно работает, но при повторной обработке не работает. В «Raw» это выглядит нормально, но иногда в «Transformed» это xml закодировано

Пример сообщения:

<?xml version="1.0" encoding="utf-8" ?>
<test attr="foo" />

Пример сообщения, как показано в «Transformed»:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;test attr=&quot;foo&quot; /&gt;

Пример javascript:

 channelMap.put('rootElementName', msg.localName());    // value is null
 channelMap.put('attrValue', msg['@attr'].toString());  // undefined is not XML

1 Ответ

1 голос
/ 28 мая 2020

Два фактора способствуют такому отказу:

Во-первых, E4X не поддерживает объявление <?xml version="1.0" encoding="utf-8" ?> (ошибка 336551: вы можете получить SyntaxError «xml - это зарезервированный идентификатор») . Вы можете исправить это, добавив препроцессор для удаления объявления:

return message.replace(/<\?xml[^>]*\?>/, "");

Чтобы еще больше запутать, объявление XML скрыто в средстве просмотра сообщений, если у вас установлен флажок «Формат XML Сообщение».

Во-вторых, если вы получаете сообщение от чего-либо. Net, у вас, вероятно, есть отметка порядка байтов в начале сообщения. Первые три байта, скорее всего, не печатаются, и, возможно, их необходимо удалить, чтобы XML мог проанализировать в Mirth.

Опять же, препроцессор приходит на помощь ( Пример 1 , Пример 2 ):

return message.replace(/\uFEFF/g,'');
...