数据编织器循环和检查使用 ESB 骡子无效
Data weaver looping and checking nullify using ESB mule
我尝试通过检查变量的空值并在结果中设置来实现一个简单的循环。
我的 mule flow 部分如下所示。
数据库(select) -> 转换消息(DataWeave- convert to xml)
数据库的值如下:
Book1 Book2 Book3 Book4 Book5
abc cde fgh ijk lmn
opq rst NULL NULL NULL
Dataweaver 代码如下所示:
ns0#LibraryDetails:{
ns0#User: payload."Book1",
ns0#User: payload."Book2",
ns0#User: payload."Book3",
ns0#User: payload."Book4",
ns0#User: payload."Book5"
}
预期输出 1 是
<LibraryDetails>
<User>abc</User>
<User>cde</User>
<User>fgh</User>
<User>ijk</User>
<User>lmn</User>
</LibraryDetails>
预期输出 2 是
<LibraryDetails>
<User>opq</User>
<User>rst</User>
</LibraryDetails>
我们如何才能只转义空值并在数据编织中创建循环。我也尝试了地图功能。能否请您说明一下。
你可以试试这个:
ns0#LibraryDetails:{
ns0#User: when null != payload."Book1" then payload."Book1" ,
ns0#User: when null != payload."Book2"then payload."Book2",
ns0#User: when null != payload."Book3"then payload."Book3",
ns0#User: when null != payload."Book4"then payload."Book4",
ns0#User: when null != payload."Book5"then payload."Book5"
}
其他:
使用以下语句:
%output application/xml skipNullOn="everywhere"
要获得预期的输出,请使用 map
,如果您希望所有元素都具有该逻辑,则使用 skipNullOn="everywhere"
。以下给出了您的预期输出
%dw 1.0
%output application/xml skipNullOn="everywhere"
%namespace ns0 http://something.com
---
ns0#LibraryDetails: { (payload map {
ns0#User: $.Book1,
ns0#User: $.Book2,
ns0#User: $.Book3,
ns0#User: $.Book4,
ns0#User: $.Book5
} ) }
我尝试通过检查变量的空值并在结果中设置来实现一个简单的循环。
我的 mule flow 部分如下所示。
数据库(select) -> 转换消息(DataWeave- convert to xml)
数据库的值如下:
Book1 Book2 Book3 Book4 Book5
abc cde fgh ijk lmn
opq rst NULL NULL NULL
Dataweaver 代码如下所示:
ns0#LibraryDetails:{
ns0#User: payload."Book1",
ns0#User: payload."Book2",
ns0#User: payload."Book3",
ns0#User: payload."Book4",
ns0#User: payload."Book5"
}
预期输出 1 是
<LibraryDetails>
<User>abc</User>
<User>cde</User>
<User>fgh</User>
<User>ijk</User>
<User>lmn</User>
</LibraryDetails>
预期输出 2 是
<LibraryDetails>
<User>opq</User>
<User>rst</User>
</LibraryDetails>
我们如何才能只转义空值并在数据编织中创建循环。我也尝试了地图功能。能否请您说明一下。
你可以试试这个:
ns0#LibraryDetails:{
ns0#User: when null != payload."Book1" then payload."Book1" ,
ns0#User: when null != payload."Book2"then payload."Book2",
ns0#User: when null != payload."Book3"then payload."Book3",
ns0#User: when null != payload."Book4"then payload."Book4",
ns0#User: when null != payload."Book5"then payload."Book5"
}
其他: 使用以下语句: %output application/xml skipNullOn="everywhere"
要获得预期的输出,请使用 map
,如果您希望所有元素都具有该逻辑,则使用 skipNullOn="everywhere"
。以下给出了您的预期输出
%dw 1.0
%output application/xml skipNullOn="everywhere"
%namespace ns0 http://something.com
---
ns0#LibraryDetails: { (payload map {
ns0#User: $.Book1,
ns0#User: $.Book2,
ns0#User: $.Book3,
ns0#User: $.Book4,
ns0#User: $.Book5
} ) }