为什么我无法在 Mirth 中访问 xml 消息?
Why can't I access xml message in Mirth?
我在 Mirth 中有一个频道正在通过 HTTP 接收 XML 消息,但是当我尝试访问消息的属性和字段时,我无法访问。如果我将一条消息复制并粘贴到 "Send Message" 中,它会起作用,但如果重新处理它就不起作用。在 "Raw" 中它看起来不错,但偶尔在 "Transformed" 中它是 xml 编码的
示例消息:
<?xml version="1.0" encoding="utf-8" ?>
<test attr="foo" />
示例消息如 "Transformed" 所示:
<?xml version="1.0" encoding="utf-8" ?>
<test attr="foo" />
示例javascript:
channelMap.put('rootElementName', msg.localName()); // value is null
channelMap.put('attrValue', msg['@attr'].toString()); // undefined is not XML
有两个因素导致了这种失败:
首先,E4X不支持<?xml version="1.0" encoding="utf-8" ?>
声明(bug 336551: You may get SyntaxError "xml is a reserved identifier")。您可以通过添加预处理器来删除声明来修复它:
return message.replace(/<\?xml[^>]*\?>/, "");
更令人困惑的是,如果您选中 "Format XML Message",XML 声明将隐藏在消息查看器中。
其次,如果您从任何 .Net 接收消息,您可能在消息的前面有一个字节顺序标记。前三个字节可能不可打印,可能需要删除 XML 才能在 Mirth 中解析。
同样,预处理器来拯救 (Example 1, Example 2):
return message.replace(/\uFEFF/g,'');
我在 Mirth 中有一个频道正在通过 HTTP 接收 XML 消息,但是当我尝试访问消息的属性和字段时,我无法访问。如果我将一条消息复制并粘贴到 "Send Message" 中,它会起作用,但如果重新处理它就不起作用。在 "Raw" 中它看起来不错,但偶尔在 "Transformed" 中它是 xml 编码的
示例消息:
<?xml version="1.0" encoding="utf-8" ?>
<test attr="foo" />
示例消息如 "Transformed" 所示:
<?xml version="1.0" encoding="utf-8" ?>
<test attr="foo" />
示例javascript:
channelMap.put('rootElementName', msg.localName()); // value is null
channelMap.put('attrValue', msg['@attr'].toString()); // undefined is not XML
有两个因素导致了这种失败:
首先,E4X不支持<?xml version="1.0" encoding="utf-8" ?>
声明(bug 336551: You may get SyntaxError "xml is a reserved identifier")。您可以通过添加预处理器来删除声明来修复它:
return message.replace(/<\?xml[^>]*\?>/, "");
更令人困惑的是,如果您选中 "Format XML Message",XML 声明将隐藏在消息查看器中。
其次,如果您从任何 .Net 接收消息,您可能在消息的前面有一个字节顺序标记。前三个字节可能不可打印,可能需要删除 XML 才能在 Mirth 中解析。
同样,预处理器来拯救 (Example 1, Example 2):
return message.replace(/\uFEFF/g,'');