从单输入消息中获取多个输出

时间:2017-12-21 08:39:34

标签: ibm-mq ibm-integration-bus extended-sql

我想从单个XML输入消息中获取多个输出。

<List>
<type>mailbox</type>
<Docs>
  <DocID>38ghjk</DocID>
</Docs>
<Docs>
  <DocID>39ghjk</DocID>
</Docs>

这就是我的XML看起来它包含更多DocID的方式。我的要求是我想为每个DocID分别输出消息。我尝试使用while循环,但我没有为每个DocID获取单独的消息。我可以获取所有DocID,但我无法获得每个DocID的单独输出。

请建议任何方式或解决方案,并对任何疑问发表评论。

2 个答案:

答案 0 :(得分:3)

DECLARE I INTEGER;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.XMLNSC.List.Docs[]);
SET I = 1;
WHILE I < J  DO
SET OutputRoot.XMLNSC.LIST.DocId[K] = InputRoot.XMLNSC.List.Docs[I].DocId;
PROPAGATE TO TERMINAL 'out' delete none;
SET I = I + 1;
END WHILE;

之前我没有使用传播语句,所以我得到单输出但现在我得到所有docid的不同输出。

答案 1 :(得分:2)

CARDINALITY不是最好的方法,你可以这样做:

DECLARE refInDocument REFERENCE TO InputRoot.XMLNSC.List.Docs;
WHILE LASTMOVE(refInDocument) DO
   SET OutputRoot.XMLNSC.Docs.DocId = refInDocument.DocId;
   PROPAGATE TO TERMINAL 'out' delete none;
   MOVE refInDocument NEXTSIBLING;
END WHILE;

您可以在此链接中的IBM文档中阅读有关该内容的更多信息: https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/bj28653_.htm