Mirth Connect Error: "...is not an xml object" when trying to output text from array

Mirth Connect Error: "...is not an xml object" when trying to output text from array

我有一个奇怪的问题。在下面的代码中,我创建了一个简单的单元素数组 x,以及一个简单的变量 y。对于数组,我将第一个元素的值设置为一些文本,就像我对变量所做的那样。当我尝试使用 logger.info 输出文本时,我得到一个错误,我没有得到变量。我正在使用 Mirth Connect 3.3.1.7856。

代码如下。请注意,这是整个通道中唯一的代码,全部在单个源转换器步骤中。

var x = [];

x[0] = 'abc';

var y = 'xyz';

logger.info('y: ' + y.toString());

logger.info('attachmentLength: ' + x.length);

logger.info.(x[0].toString());

前两个 "logger.info" 命令工作正常。然而,在尝试执行最后一个时,会记录以下错误。

源代码:

170: var x = [];

171: x[0] = 'abc';

172: var y = 'xyz';

173: logger.info('y: ' + y.toString());

174: logger.info('attachmentLength: ' + x.length);

175: logger.info.(x[0].toString());

176: if ('xml' === typeof msg) {

177: if (msg.hasSimpleContent()) {

178: msg = msg.toXMLString();

179: }

LINE NUMBER:    175

DETAILS:    TypeError: function info() {/*

void info(java.lang.Object,java.lang.Throwable)

void info(java.lang.Object)

*/}

is not an xml object.

注意第 176-179 行不是我脚本的一部分。这是 Mirth 正在添加的内容。

几周前,我遇到了另一个问题,其中变量被视为 Java 变量而不是 Javascript 变量。解决方案是对变量做一些事情,使其成为 Java 脚本而不是 Java 变量。不幸的是,我对问题或解决方案的记忆不够多,无法再次找到它,甚至无法在我的代码中找到我进行更改的位置。也许这是我可以在这里尝试的东西。

是否可以将数组视为 Java 数组而不是 Javascript 数组?如果是这样,我可以 "force" 它是一个 Java 脚本数组吗?

另一件需要注意的事情 - 所有数据类型,包括源连接器数据类型,都设置为 "Raw",这意味着任何源数据都不应要求任何特定格式,包括 XML.

我完全不知道如何解决这个问题。如有任何帮助,我们将不胜感激。

谢谢,

MMall

我想所做的更改是为了支持 JSON 对象,这就是它无法以预期方式工作的原因。因此,您可以使用其中之一:

var x = new Array();
x[0] = 'abc';
logger.info("Length: " + x.length);
logger.info(x[0].toString());

var y = [];
y[0] = 'dfg';
logger.info("Length: " + y.length);
logger.info(JSON.stringify(y[0]));

是不是你写错了“.”导致你的问题?而不是:

logger.info.(x[0].toString());

你应该有:

logger.info(x[0].toString());