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());
我有一个奇怪的问题。在下面的代码中,我创建了一个简单的单元素数组 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());