mule dataweaver中的For循环和when条件

mule dataweaver中的For循环和when条件,mule,dataweave,Mule,Dataweave,我有一个输入xml文件,如下所示,其中有多个LineError段 <LineErrors> <LineError> <LineErrorType>CARGO REPORT SAC</LineErrorType> <LineErrorID>CARGO REPORT SAC</LineErrorID> <LineErrorDescription>N/A</LineE

我有一个输入xml文件,如下所示,其中有多个LineError段

 <LineErrors>
    <LineError>
      <LineErrorType>CARGO REPORT SAC</LineErrorType>
      <LineErrorID>CARGO REPORT SAC</LineErrorID>
      <LineErrorDescription>N/A</LineErrorDescription>
    </LineError>
    <LineError>
      <LineErrorType>CONSOLIDATED STATUS</LineErrorType>
      <LineErrorID>CONSOLIDATED STATUS</LineErrorID>
      <LineErrorDescription>HELD</LineErrorDescription>
    </LineError>
</LineErrors>

货物报告
货物报告
不适用
综合地位
综合地位
持有
现在在dataweaver中,我正在生成另一个xml文件,其中,如果有任何LineError段包含LineErrorDescription字段作为值“Hold”,则属性映射到固定值。例如id=“x”如果LineErrors.LineError.LineErrorDescription==“保持”

所以我的问题是如何在dataweaver中进行迭代和比较。如果您有任何线索,请与我们分享。

您有没有看过这本书?我建议以此为出发点。文档中的一个示例可以帮助您了解以下内容:

通过以下输入:

<users>
  <user>
    <name>Mariano Achaval</name>
    <phone>152235465654</phone>
    <street>Laprida 924</street>
  </user>
  <user>
    <name>Martin Alejandro Cousido</name>
    <phone>15332255555</phone>
    <street>Acassuso 2280</street>
  </user>
</users>
产生以下输出:

{
  "contacts": [
    {
      "firstName": "Mariano",
      "lastName": "Achaval",
      "email": "mariano.achaval@acme.com.ar",
      "address": "Laprida 924"
    },
    {
      "firstName": "Martin",
      "secondName": "Alejandro",
      "lastName": "Cousido",
      "email": "martin.alejandro.cousido@acme.com.ar",
      "address": "Acassuso 2280"
    }
  ]
}
我建议您在上述示例的后面尝试实现您在原始问题中解释的内容,如果遇到任何问题,请使用您正在使用的DW脚本示例提出新问题,以寻求进一步的建议。这样,你将能够针对更具体的问题,而不是让你这样做的工作

希望这能有所帮助。

你看了地图了吗?我建议以此为出发点。文档中的一个示例可以帮助您了解以下内容:

通过以下输入:

<users>
  <user>
    <name>Mariano Achaval</name>
    <phone>152235465654</phone>
    <street>Laprida 924</street>
  </user>
  <user>
    <name>Martin Alejandro Cousido</name>
    <phone>15332255555</phone>
    <street>Acassuso 2280</street>
  </user>
</users>
产生以下输出:

{
  "contacts": [
    {
      "firstName": "Mariano",
      "lastName": "Achaval",
      "email": "mariano.achaval@acme.com.ar",
      "address": "Laprida 924"
    },
    {
      "firstName": "Martin",
      "secondName": "Alejandro",
      "lastName": "Cousido",
      "email": "martin.alejandro.cousido@acme.com.ar",
      "address": "Acassuso 2280"
    }
  ]
}
我建议您在上述示例的后面尝试实现您在原始问题中解释的内容,如果遇到任何问题,请使用您正在使用的DW脚本示例提出新问题,以寻求进一步的建议。这样,你将能够针对更具体的问题,而不是让你这样做的工作


希望这有帮助。

您可以一起使用过滤器和映射,试试这个-

%dw 1.0
%output application/xml
---
payload.LineErrors.*LineError filter ($.LineErrorDescription == 'HELD') map {
   id: 'X'
}

您可以同时使用过滤器和映射,请尝试以下操作-

%dw 1.0
%output application/xml
---
payload.LineErrors.*LineError filter ($.LineErrorDescription == 'HELD') map {
   id: 'X'
}

下面的脚本生成amap。但我的输出是xml。所以结构是类似的。你能告诉我如何用你的解决方案创建这个xml的脚本吗。但我的输出是xml。所以结构是类似的。你能告诉我如何用你的解决方案创建这个xml吗。