Xml 如何针对每个作用域有条件地限制a中的有效负载';Mulesoft 4中的集合表达式?
在我的有效负载中,我得到了以下XMLXml 如何针对每个作用域有条件地限制a中的有效负载';Mulesoft 4中的集合表达式?,xml,foreach,conditional-statements,dataweave,mulesoft,Xml,Foreach,Conditional Statements,Dataweave,Mulesoft,在我的有效负载中,我得到了以下XML <colors> <color> <name>red</name> <type>primary</type> </color> <color> <name>orange</name> <type>secondary</type> </col
<colors>
<color>
<name>red</name>
<type>primary</type>
</color>
<color>
<name>orange</name>
<type>secondary</type>
</color>
<color>
<name>blue</name>
<type>primary</type>
</color>
<color>
<name>green</name>
<type>secondary</type>
</color>
</colors>
在Mulesoft 4中,如何为每个构造一个
,以按类型对集合进行条件化?它对表达式使用DataWeave2.0语法,但我找不到任何缩减集合的示例。我认为我不再需要XPATH了,因为负载应该可以用点表示法寻址,但我可能错了。您可以执行以下操作来获得类型为主要类型的颜色:
%dw 2.0
output application/xml
---
{
colors:
color: payload.colors.*color filter ($.`type` == "primary") map
{
a:$.name
}.a
}
输出:
<?xml version='1.0' encoding='UTF-8'?>
<colors>
<color>red</color>
<color>blue</color>
</colors>
<?xml version='1.0' encoding='UTF-8'?>
<colors>
<color>
<name>red</name>
<type>primary</type>
</color>
<color>
<name>blue</name>
<type>primary</type>
</color>
</colors>
输出:
<?xml version='1.0' encoding='UTF-8'?>
<colors>
<color>red</color>
<color>blue</color>
</colors>
<?xml version='1.0' encoding='UTF-8'?>
<colors>
<color>
<name>red</name>
<type>primary</type>
</color>
<color>
<name>blue</name>
<type>primary</type>
</color>
</colors>
红色
主要的,重要的
蓝色
主要的,重要的
您可以执行以下操作,仅获取类型为主要颜色的颜色:
%dw 2.0
output application/xml
---
{
colors:
color: payload.colors.*color filter ($.`type` == "primary") map
{
a:$.name
}.a
}
输出:
<?xml version='1.0' encoding='UTF-8'?>
<colors>
<color>red</color>
<color>blue</color>
</colors>
<?xml version='1.0' encoding='UTF-8'?>
<colors>
<color>
<name>red</name>
<type>primary</type>
</color>
<color>
<name>blue</name>
<type>primary</type>
</color>
</colors>
输出:
<?xml version='1.0' encoding='UTF-8'?>
<colors>
<color>red</color>
<color>blue</color>
</colors>
<?xml version='1.0' encoding='UTF-8'?>
<colors>
<color>
<name>red</name>
<type>primary</type>
</color>
<color>
<name>blue</name>
<type>primary</type>
</color>
</colors>
红色
主要的,重要的
蓝色
主要的,重要的
您可以在foreach集合中使用DW脚本,而不是使用XPATH
每个示例:(假设输入负载是XML类型)
如果仅将名称作为集合中的输出:(Add.name)
您可以在foreach集合中使用DW脚本,而不是使用XPATH
每个示例:(假设输入负载是XML类型)
如果仅将名称作为集合中的输出:(Add.name)
一旦有效负载准备就绪,就可以在for each collectionpayload.colors
(以便它获得一个颜色元素数组)…您可能希望在此处输出application/java,以避免在foreach中再次解析XML。这是否代替了对集合使用dataweave表达式?你是说先用另一个单独的转换为每个
的做序吗?你可以内联(即在For Each collection定义中使用相同的概念)或为For Each.做序。选择由你自己来做!!!一旦你准备好了有效负载,你就可以在For Each collection有效负载中进行配置。颜色
(以便它获得一个颜色元素数组)…您可能希望在此处输出application/java,以避免在foreach中再次解析XML。这是否代替了在集合中使用dataweave表达式?您是说先用另一个单独的转换为每个
的
排序吗?您可以内联执行(即,在为每个集合定义的范围内,使用相同的概念或前言,为每个..进行选择!!!