为什么我无法在 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" 所示:

&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

有两个因素导致了这种失败:

首先,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,'');