2013-05-09 3 views
0

У меня есть XML, какизвлечь значения 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 

Как я могу оценить значения, чтобы получить все, как

Я попытался цикл 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> 

Спасибо всем.

ответ

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. Это хорошая практика, чтобы бороться и находить решения самостоятельно, а не искать кормление ложкой.

+0

Спасибо, но я исправил самостоятельно. :) в тот же день – Yogus

+0

У меня возникла проблема здесь, можете ли вы предоставить мне свои ценные материалы http://stackoverflow.com/questions/16479581/lastmove-loop-is-not-working – Yogus

Смежные вопросы