Mule 将XML中的空值跳过为JSON,而不跳过可为零的元素

Mule 将XML中的空值跳过为JSON,而不跳过可为零的元素,mule,dataweave,anypoint-studio,mulesoft,mule4,Mule,Dataweave,Anypoint Studio,Mulesoft,Mule4,我有一个XML输入: <XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ABC xsi:nil="true"/> </XML> 预期产出: { "abc": null } 我想跳过XML中的空值,但不想让可为零的值(即包含xsi:nil=“true”的元素)跳过您可以使用以下dataweave构造定义应该在输出负载

我有一个XML输入:

<XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ABC xsi:nil="true"/>
</XML>
预期产出:

{
  "abc": null
}

我想跳过XML中的空值,但不想让可为零的值(即包含xsi:nil=“true”的元素)跳过

您可以使用以下dataweave构造定义应该在输出负载中写入哪些元素:

%dw 2.0
output application/json
---
{
  (abc: payload.XML.ABC) if (payload.XML.ABC?) //abc will be written only if it exists in the payload (whether its value is nil or not)
  (def: payload.XML.DEF) if (payload.XML.DEF?) //def will be written only if it exists in the payload (whether its value is nil or not)
}
例如:

DataWeave中缺少昏迷

%dw 2.0
output application/json
---
{
  (abc: payload.XML.ABC) if (payload.XML.ABC?), //abc will be written only if it exists in the payload (whether its value is nil or not)
  (def: payload.XML.DEF) if (payload.XML.DEF?)  //def will be written only if it exists in the payload (whether its value is nil or not)
}

在我的例子中,我们无法预测哪个XML元素将具有“xsi:nil=”true“,只有当我们知道哪个XML元素可为nillable时,我们才能编写if条件。我们有没有不使用“if”的解决方案,比如“writeNilOnNull=true”等属性。嘿,阿米特,你可以为你映射的每个元素添加条件。这样,如果输入中存在元素,则只在输出中写入元素。是的,可能的解决方案,但我有将近200多个元素,并且不可能为所有元素添加if条件。好的。请你更新这个问题,并加上你实际地图的摘录,好吗?
%dw 2.0
output application/json
---
{
  (abc: payload.XML.ABC) if (payload.XML.ABC?), //abc will be written only if it exists in the payload (whether its value is nil or not)
  (def: payload.XML.DEF) if (payload.XML.DEF?)  //def will be written only if it exists in the payload (whether its value is nil or not)
}