欢乐连接错误:" ...不是xml对象"当试图从数组输出文本时

时间:2016-02-26 15:18:47

标签: javascript xml mirth

我有一个奇怪的问题。在下面的代码中,我创建了一个简单的单元素数组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变量。解决方案是使用变量做一些事情,使其成为Javascript而不是Java变量。不幸的是,我不能完全记住问题或解决方案,以便再次找到它,或者甚至在我的代码中找到我做出更改的地方。也许这是我可以在这里尝试的。

是否可以将数组视为Java数组而不是Javascript数组?如果是这样,我可以强迫"它是一个Javascript数组,不知何故?

还有一点需要注意 - 所有数据类型(包括源连接器数据类型)都设置为" Raw",这意味着不应该要求任何源数据采用任何特定格式,包括XML。 / p>

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

谢谢,

MMall

2 个答案:

答案 0 :(得分:0)

我猜这些更改是为了支持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]));

答案 1 :(得分:0)

这不是你的错误“。”导致你的问题?而不是:

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

你应该:

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