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 (InputRoot.XMLNSC.Ns1:TNS.Ns1:Response.Ns1:Processed.Ns1:field[] AS T WHERE T.name='Address' から T を選択); SET OutputRoot.XML.EE_EAI_MESSAGE.Response.MOBILE = THE (InputRoot.XMLNSC.Ns1:TNS.Ns1:Response.Ns1:Processed.Ns1:field[] AS T WHERE T.name='Phone' から T を選択);

于 2015-05-07T08:55:54.137 に答える