我正在使用dataweave将csv文件转换为xml文件。在某些地方,某个xml标签没有任何价值,我得到一个空标签。
我想要的是,如果没有值,那么根本不能在xml中出现该标签。
这是一个很长的映射,所以我不想在if标签时写入整个映射,而只是在其他条件下写入该标签的映射。
数据映射
name: ((payload01.name) when payload01.name != ""
otherwise {}),
输出: 如果输入中有名称值
<name>Kittu</name>
否则
<name/>
我想要的是,在其他条件下,根本不应该有标签。
感谢所有帮助。感谢。
答案 0 :(得分:0)
&#34;名称:&#34;应该在括号内,如下:
(name: (payload01.name) when payload01.name != ""
otherwise {})
答案 1 :(得分:0)
使用skipNullOn =&#34;无处不在&#34;在输出声明中,所以你不需要为所有元素声明它。
%output application/xml skipNullOn="everywhere"
参考:https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#output-directive
如果您需要存在空标签,那么我们将不得不使用其他方式,如下所示:
name: payload01.name when ((payload01.name != null) and (payload01.name != "" )) otherwise "",
其他方式是指定&#39;默认&#39;价值是最简单的:
name: payload01.name default "",
答案 2 :(得分:0)
同意Victor P,“名字:”应该在括号内。但是,要获得相同的结果,您可以使用以下代码段。
(name: payload01.name) when payload01.name != ""
虽然没有否则它将构造名称,除非payload01.name为空。
答案 3 :(得分:0)
在输出声明中使用skipNullOn =“attributes”,这样就不需要为所有元素声明它。
%输出应用程序/ xml skipNullOn =“attributes”
答案 4 :(得分:0)
要在mule中添加空标签,这应该更合适。 name:payload.name default {}
这将产生 如果名称没有价值。答案 5 :(得分:0)
skipNullOn检查元素或属性是否存在。 例如如果输入中没有name元素,则它不会在输出中显示。
要检查值是否为空,您必须使用以下条件: (名称:payload01.name)当payload01.name!=&#34;&#34;
时答案 6 :(得分:0)
如果你使用skipNullOn =“everywhere”标签将在输出字段中出现,尽管它没有值。所以在这种情况下它不起作用。 尝试编写单独的函数来检查和跳过整个标记的空值。
答案 7 :(得分:0)
您可以进行如下检查以发送xml标记:
*(Contact: {
mobNo: payload.moNo,
countryCode: payload.countryCode
}
) when payload != null and paylaod.mobNo != null*
如上所述,只有当有效负载中存在有效的mobNo时,整个Cntact标签才会进入请求。