Dataweave Mulesoft Skip XML标签

时间:2016-06-21 10:27:09

标签: xml mule datamapper dataweave

我正在使用dataweave将csv文件转换为xml文件。在某些地方,某个xml标签没有任何价值,我得到一个空标签。

我想要的是,如果没有值,那么根本不能在xml中出现该标签。

这是一个很长的映射,所以我不想在if标签时写入整个映射,而只是在其他条件下写入该标签的映射。

数据映射

    name: ((payload01.name) when payload01.name != ""
    otherwise {}),

输出: 如果输入中有名称值

    <name>Kittu</name>

否则

    <name/> 

我想要的是,在其他条件下,根本不应该有标签。

感谢所有帮助。感谢。

8 个答案:

答案 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标签才会进入请求。