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

Get Multiple Outputs From Single Input Message

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

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

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

请提出任何方法或解决方案,如有任何疑问请发表评论。

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 的不同输出。

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;

您可以在 link 中的 IBM 文档中阅读更多相关信息: https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/bj28653_.htm