0

我从应用程序中收到以下消息

        field:CHARACTER:abcd
                mv:CHARACTER:1
                name:CHARACTER:NAME
                sv:CHARACTER:1
        field:CHARACTER:aaaaa
                mv:CHARACTER:1
                name:CHARACTER:Address
                sv:CHARACTER:1
        field:CHARACTER:123456
                mv:CHARACTER:1
                name:CHARACTER:Phone
                sv:CHARACTER:1

我将以上内容解析为 XML,代码为:

SET OutputRoot.XML.EE_EAI_MESSAGE.Response.NAME     =   InputRoot.XMLNSC.Ns1:TNS.Ns1:Response.Ns1:Processed.Ns1:field[1];
SET OutputRoot.XML.EE_EAI_MESSAGE.Response.ADDRESS  =   InputRoot.XMLNSC.Ns1:TNS.Ns1:Response.Ns1:Processed.Ns1:field[2];
SET OutputRoot.XML.EE_EAI_MESSAGE.Response.MOBILE   =   InputRoot.XMLNSC.Ns1:TNS.Ns1:Response.Ns1:Processed.Ns1:field[3];

我有一个问题,因为应用程序从不包含响应消息中的空字段,因此应用程序将消息发送为

        field:CHARACTER:abcd
                mv:CHARACTER:1
                name:CHARACTER:NAME
                sv:CHARACTER:1
        field:CHARACTER:123456
                mv:CHARACTER:1
                name:CHARACTER:Phone
                sv:CHARACTER:1

Address上述输入消息中缺少该字段。根据我的esql代码,由于字段索引,数据被错误地映射。所以我需要通过检查输入消息中的标记名来映射字段,但我做不到......如果有人对此提供帮助,我将非常感谢。

4

1 回答 1

1

尝试: SET OutputRoot.XML.EE_EAI_MESSAGE.Response.NAME = THE (SELECT T FROM InputRoot.XMLNSC.Ns1:TNS.Ns1:Response.Ns1:Processed.Ns1:field[] AS T WHERE T.name='NAME') ; SET OutputRoot.XML.EE_EAI_MESSAGE.Response.ADDRESS = THE (SELECT T FROM InputRoot.XMLNSC.Ns1:TNS.Ns1:Response.Ns1:Processed.Ns1:field[] AS T WHERE T.name='Address'); SET OutputRoot.XML.EE_EAI_MESSAGE.Response.MOBILE = THE (SELECT T FROM InputRoot.XMLNSC.Ns1:TNS.Ns1:Response.Ns1:Processed.Ns1:field[] AS T WHERE T.name='Phone');

于 2015-05-07T08:55:54.137 回答