如何使用Dataweave删除括号或忽略Scatter-Gather中的括号?

时间:2016-07-24 03:58:06

标签: 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'?>
 <policy-group>
   </policy>
   </policy>
 </policy-group>,
 <?xml version='1.0' encoding='windows-1252'?>
 <policy-group>
   </policy>
   </policy>
 </policy-group>
]

字符串XML消息中的括号在我的Dataweave中导致错误。有谁知道如何解决这个问题?

我的错误是..

意外的角色&#39; [&#39; (代码91)prolog;预期&#39;&lt;&#39;  at [row,col {unknown-source}]:[1,1](com.ctc.wstx.exc.WstxUnexpectedCharException)。

提前致谢。

2 个答案:

答案 0 :(得分:0)

在Scatter-Gather之后添加Combine-Collection,它会将所有结果合并为一个。对于某些情况,如果未合并结果,则会出现问题。

答案 1 :(得分:0)

如果您不想使用变压器或写一些特殊代码来执行此操作。您可以像下面这样做

使用表达式组件

<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中执行

 <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"/>