3

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

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

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

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

4

2 回答 2

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

于 2018-01-12T13:18:29.253 回答
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

于 2018-03-12T16:34:53.137 回答