【问题标题】:How to split XML having nested loops in Talend如何在 Talend 中拆分具有嵌套循环的 XML
【发布时间】:2021-04-30 20:18:07
【问题描述】:

在下面的 XML 中有一个嵌套循环。有点努力将它们分成每个 MAV.CAMS 的一行。

预期输出:

第一个 MAV.CAMS 应该拆分

第二个MMB应该拆分

应该拆分第三个 MMR

<?xml version="1.0" encoding="UTF-8" ?>
<REQUEST>
<REQUEST_TYPE>NEW</REQUEST_TYPE>
<MOD>
<MOD.CAMS>
<MOD_CODE>ABCD1004</MOD_CODE>
<MAV>
<MAV.CAMS>
<MOD_CODE>ABCD1004</MOD_CODE>
<MAP>
<MAP.CAMS>
<MAP_CODE>ABCD1004_201</MAP_CODE>
<MAB>
<MAB.CAMS>
<AST_CODE>CWRK</AST_CODE>
<MAB_PERC>100</MAB_PERC>
</MAB.CAMS>
<MAB.CAMS>
<AST_CODE>EX</AST_CODE>
<MAB_PERC>200</MAB_PERC>
</MAB.CAMS>          
</MAB>
</MAP.CAMS>
</MAP>
<MMR>
<MMR.CAMS>
<MOD_CODE>ABCD1004</MOD_CODE>
<REX_CODE>PRE</REX_CODE>
<MMB>
<MMB.CAMS>       
<MMB_SEQ>1</MMB_SEQ>
<FMC_CODE>AER298</FMC_CODE>
</MMB.CAMS>
<MMB.CAMS>       
<MMB_SEQ>2</MMB_SEQ>
<FMC_CODE>AER299</FMC_CODE>
</MMB.CAMS>
</MMB>       
</MMR.CAMS>
<MMR.CAMS>
<MOD_CODE>ABCD1004</MOD_CODE>
<REX_CODE>CO</REX_CODE>
<MMR_DESC/>
<MMB>
<MMB.CAMS>       
<MMB_SEQ>1</MMB_SEQ>
<FMC_CODE>AER301</FMC_CODE>
</MMB.CAMS>
<MMB.CAMS>       
<MMB_SEQ>2</MMB_SEQ>
<FMC_CODE>AER445</FMC_CODE>
</MMB.CAMS>
</MMB>       
</MMR.CAMS>  
</MMR>
</MAV.CAMS>  
<MAV.CAMS>
<MOD_CODE>ABCD1004</MOD_CODE>
<MAP>
<MAP.CAMS>
<MAP_CODE>ABCD1004_201</MAP_CODE>
<MAB>
<MAB.CAMS>
<AST_CODE>CWRK</AST_CODE>
<MAB_PERC>200</MAB_PERC>
</MAB.CAMS>
<MAB.CAMS>
<AST_CODE>EX</AST_CODE>
<MAB_PERC>500</MAB_PERC>
</MAB.CAMS>          
</MAB>
</MAP.CAMS>
</MAP>
<MMR>
<MMR.CAMS>
<MOD_CODE>ABCD1004</MOD_CODE>
<REX_CODE>PRE</REX_CODE>
<MMB>
<MMB.CAMS>       
<MMB_SEQ>1</MMB_SEQ>
<FMC_CODE>AER298</FMC_CODE>
</MMB.CAMS>
<MMB.CAMS>       
<MMB_SEQ>2</MMB_SEQ>
<FMC_CODE>AER299</FMC_CODE>
</MMB.CAMS>
</MMB>       
</MMR.CAMS>
<MMR.CAMS>
<MOD_CODE>ABCD1004</MOD_CODE>
<REX_CODE>CO</REX_CODE>
<MMR_DESC/>
<MMB>
<MMB.CAMS>       
<MMB_SEQ>1</MMB_SEQ>
<FMC_CODE>AER301</FMC_CODE>
</MMB.CAMS>
<MMB.CAMS>       
<MMB_SEQ>2</MMB_SEQ>
<FMC_CODE>AER445</FMC_CODE>
</MMB.CAMS>
</MMB>       
</MMR.CAMS>  
</MMR>
</MAV.CAMS>
</MAV>
</MOD.CAMS>
</MOD>
</REQUEST>

【问题讨论】:

    标签: xml talend


    【解决方案1】:

    首先我认为你的意思是:MAV > MMR > MMB 而不是 MAV> MMB>MMR。

    如果您想在每个 MAV.CAMS 中输出 1 行,则必须将循环元素放在 MAV.CAMS 上。 在您的示例文件中,您将有 2 行的输出 (2 MAV.CAMS) 但是如果你想要关于嵌套元素的所有细节,你应该把你的循环元素放在最深的元素(MMB.CAMS)。然后你会在输出上有 8 行(因为输入中有 8 个 MMB.CAMS 元素)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多