Java 如何使用Dataweave删除散点聚集中的括号或忽略它们?

Java 如何使用Dataweave删除散点聚集中的括号或忽略它们?,java,mule,dataweave,Java,Mule,Dataweave,我在3个不同服务的返回中有一个1..n个对象。我用Scatter-Gather调用3个服务中的每一个。我的总数为: [ <?xml version='1.0' encoding='windows-1252'?> <policy-group> </policy> </policy> </policy-group>, <?xml version='1.0' encoding='windows-1252'?>

我在3个不同服务的返回中有一个1..n个对象。我用Scatter-Gather调用3个服务中的每一个。我的总数为:

[
 <?xml version='1.0' encoding='windows-1252'?>
 <policy-group>
    </policy>
    </policy>
 </policy-group>,
 <?xml version='1.0' encoding='windows-1252'?>
 <policy-group>
   </policy>
   </policy>
 </policy-group>,
 <?xml version='1.0' encoding='windows-1252'?>
 <policy-group>
   </policy>
   </policy>
 </policy-group>
]
[
,
,
]
字符串XML消息中的括号在my Dataweave中导致错误。有人知道如何回避这个问题吗

我的错误是


意外字符“[”(代码91)在prolog中,预期“在分散聚集后添加合并集合,它将把所有结果合并为一个。对于某些情况,当结果未合并时会出现问题。

在分散聚集后添加合并集合,它将把所有结果合并为一个。对于某些情况,当结果未合并时会出现问题。

如果不想使用t或者写一些特殊的代码来实现这一点。你可以简单地像下面这样做

使用表达式组件

<expression-component doc:name="Expression"><![CDATA[
message.payload= org.mule.util.StringUtils.removeStart(message.payload,"[");
message.payload= org.mule.util.StringUtils.removeEnd(message.payload,"]"); 
]]>
</expression-component>

或者可以直接在设置的有效载荷中执行

 <set-payload value="#[message.payload= org.mule.util.StringUtils.removeStart(message.payload,&quot;[&quot;);message.payload= org.mule.util.StringUtils.removeEnd(message.payload,&quot;]&quot;)]" doc:name="Set Payload"/>

如果您不想使用transformer或编写一些特殊代码来完成此操作,您只需执行以下操作即可

使用表达式组件

<expression-component doc:name="Expression"><![CDATA[
message.payload= org.mule.util.StringUtils.removeStart(message.payload,"[");
message.payload= org.mule.util.StringUtils.removeEnd(message.payload,"]"); 
]]>
</expression-component>

或者可以直接在设置的有效载荷中执行

 <set-payload value="#[message.payload= org.mule.util.StringUtils.removeStart(message.payload,&quot;[&quot;);message.payload= org.mule.util.StringUtils.removeEnd(message.payload,&quot;]&quot;)]" doc:name="Set Payload"/>


Sulthony,它不起作用。我得到了可以记录的XML,但现在它返回到记录器中的3个BinaryInputStreams和限定类名。当我删除合并集合时,这种情况仍然存在。这确实很难解决。DataWeave的预期输入是什么?将所有这三个XML作为单个输入,或者继续它们一个接一个?如果是单个输入,则在分散收集之后将对象添加到XML transformer。它将把所有这三个XML包装为一个XML文档。如果将逐个进行,则在分散收集之后添加收集拆分器流控制。它将处理每个XML文档。这已通过Message Enricher和fDataweaveSulthony中的latten函数不起作用。我得到了可以记录的XML,但现在它返回到记录器中的3个二进制输入流和限定类名。当我删除合并集合时,这种情况也持续存在。这确实很难解决。DataWeave的预期输入是什么?所有这三个XML作为一个单独的输入le input,或逐个执行?如果是单个输入,则在分散收集后将对象添加到XML transformer。它将把所有这三个XML包装为一个XML文档。如果将逐个执行,则在分散收集后添加收集拆分器流控制。它将处理每个XML文档。这已通过Messa解决ge-Enricher与Dataweave中的展平函数