我有像
这样的xml <NS5:CAIAssembly>
<NS5:CAIComponent >
<NS5:CAICode>033144</NS5:CAICode>
<NS5:Quantity>1</NS5:Quantity>
</NS5:CAIComponent>
<NS5:CAIComponent >
<NS5:CAICode>048429</NS5:CAICode>
<NS5:Quantity>1</NS5:Quantity>
</NS5:CAIComponent>
<NS5:CAIComponent >
<NS5:CAICode>073528</NS5:CAICode>
<NS5:Quantity>1</NS5:Quantity>
</NS5:CAIComponent>
<NS5:CAIComponent >
<NS5:CAICode>563781</NS5:CAICode>
<NS5:Quantity>1</NS5:Quantity>
</NS5:CAIComponent>
</NS5:CAIAssembly>
我写的是想获得
的值SET OutputRoot.XMLNSC.root.row[rowCnt].Kit_info.components.productCd = COALESCE(FIELDVALUE(orgObj.*:ListOfCAD.*:CAD.*:CADAssembly.*:CADComponent.*:CAICode[]),'0')||'_'||COALESCE(FIELDVALUE(orgObj.*:ListOfCAD.*:CAD.*:CADAssembly.*:CADComponent.*:CCIDCode[]),'0');
SET OutputRoot.XMLNSC.root.row[rowCnt].Kit_info.components.quantity = FIELDVALUE(orgObj.*:CAIAssembly.*:CAIComponent.*:Quantity[]);
上面的代码给我的结果只有一个
<components>
<productCd >033144_5423</productCd >
<quantity>1</quantity>
</components
&GT;
如何迭代值以获得所有类似
我尝试过While循环,但它无法正常工作
<components>
<productCd >033144_5423</productCd >
<quantity>1</quantity>
</components>
<components>
<productCd >048429_5423</productCd >
<quantity>1</quantity>
</components>
<components>
<productCd >073528_5423</productCd >
<quantity>1</quantity>
</components>
<components>
<productCd >563781_5423</productCd >
<quantity>1</quantity>
</components>
谢谢大家。
答案 0 :(得分:1)
这很容易实现。请尝试以下代码:
DECLARE inputRef REFERENCE TO InputRoot.XMLNSC.NS5:CAIAssembly;
DECLARE Ref_CAIComponent REFERENCE TO inputRef.NS5:CAIComponent[1];
--Now run the below loop
WHILE LASTMOVE(Ref_CAIComponent) DO
CREATE FIELD OutputRoot.XMLNSC.components[index];
DECLARE outRef REFERENCE TO OutputRoot.XMLNSC.components[index];
SET index=index+1;
SET outRef.productCd=Ref_CAIComponent.NS5:CAICode;
SET outRef.quantity=Ref_CAIComponent.NS5:Quantity;
MOVE Ref_CAIComponent NEXTSIBLING REPEAT NAME;
END WHILE;
P.S。最好是自己努力寻找解决方案,而不是寻找勺子喂养。