为什么我不能在Mirth中访问xml消息?

问题描述 投票:0回答:1

我在Mirth中有一个通过HTTP接收XML消息的通道,但是当我尝试访问消息的属性和字段时,我无法。如果我将消息复制并粘贴到“发送消息”中,则可以使用,但是如果重新处理,则无效。在“原始”中看起来不错,但偶尔在“变形”中则是xml编码

示例消息:

<?xml version="1.0" encoding="utf-8" ?>
<test attr="foo" />

示例消息,如“已转换”所示:

&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
xml mirth e4x
1个回答
0
投票

导致这种失败的两个因素:

首先,E4X不支持<?xml version="1.0" encoding="utf-8" ?>声明(bug 336551: You may get SyntaxError "xml is a reserved identifier")。您可以通过添加预处理器来删除声明来修复它:

return message.replace(/<\?xml[^>]*\?>/, "");

进一步引起混淆,如果选中了“设置XML消息格式”,则XML声明将隐藏在消息查看器中。

第二,如果您从任何.Net接收消息,则消息的前面可能有一个字节顺序标记。前三个字节可能是不可打印的,并且可能需要删除以使XML在Mirth中解析。

再次,抢救的预处理器(Example 1Example 2):

return message.replace(/\uFEFF/g,'');
© www.soinside.com 2019 - 2024. All rights reserved.