如何检查Data weaver:Mule中的空条件

如何检查Data weaver:Mule中的空条件,mule,mule-studio,mule-component,mule-el,Mule,Mule Studio,Mule Component,Mule El,这是我的xml,首先我需要检查'RecordsEntries'不应该是'null',然后RecordEntry不应该是null后跟映射代码 <?xml version="1.0" encoding="UTF-8"?> <Records> <storenumber /> <calculated>false</calculated> <subTotal>12</subTotal> <Records

这是我的xml,首先我需要检查'RecordsEntries'不应该是'null',然后RecordEntry不应该是
null
后跟映射代码

<?xml version="1.0" encoding="UTF-8"?>
<Records>
  <storenumber />
  <calculated>false</calculated>
  <subTotal>12</subTotal>
 <RecordsEntries>
   <RecordEntry>
     <deliverycharge>30.0</deliverycharge>
     <entryNumber>8</entryNumber>
     <Value>true</Value>
  </RecordEntry>
  <RecordEntry>
    <deliverycharge>20.0</deliverycharge>
    <entryNumber>7</entryNumber>
    <Value>false</Value>
  </RecordEntry>
</RecordsEntries>
 <RecordsEntries>
    <RecordEntry>
      <deliverycharge>30.0</deliverycharge>
      <entryNumber>8</entryNumber>
      <Value>false</Value>
    </RecordEntry>
 </RecordsEntries>
</Records>
获取错误,如缺少
。通过直接在第一个循环中检查null条件,尝试了其他方法,得到了类似“无法将数组强制为布尔值”的错误。请建议。谢谢。

你可以这样做

%dw 1.0
%output application/xml
---
orders: {
  order: {
  StoreID: payload.Records.storenumber,
  Total: payload.calculated,
 ((payload.Records.*RecordsEntries.*RecordEntry default []) map {
      IndividualEntry: {
        Number:$.entryNumber,
        DeliverCharge:$.deliverycharge
      }
    })
  }
}
DataWeave对于查询诸如
有效负载.Records.*RecordsEntries.*RecordEntry
中的值是“空安全的”,但在尝试使用空值(例如
空映射{}
)操作时将抛出错误

default
运算符将其左侧的值(如果
null
)替换为右侧的值


您还缺少一个
*
。只要需要匹配的所有重复元素,就需要在xml中使用它。

如果要跳过dataweave中基于null或空白的特定字段分配,可以使用下面提到的脚本

有效负载映射((payload01,indexOfPayload01)->{Name:payload01.Name,(LastName:payload01.LastName)当payload01.LastName!=null且payload01.LastName!=''})


如果传入有效负载中的Name字段为null或空白,则这将跳过Name的字段映射。

如果输入端的值为null,则在没有其他方式的情况下,在上述语法中,我将跳过lastname的字段分配,则无法使用。在这种情况下,什么时候可以不用其他方法使用。我已经用过很多次了。
%dw 1.0
%output application/xml
---
orders: {
  order: {
  StoreID: payload.Records.storenumber,
  Total: payload.calculated,
 ((payload.Records.*RecordsEntries.*RecordEntry default []) map {
      IndividualEntry: {
        Number:$.entryNumber,
        DeliverCharge:$.deliverycharge
      }
    })
  }
}