Mule 4中使用For Each拆分XML Payload失败,请求技术支持
问题解决:Mule For Each拆分XML节点失败
问题根源
你当前的DataWeave表达式错误添加了output application/xml,这会把本应返回的节点集合转换成XML格式输出,导致For Each无法识别为可迭代的集合对象。
修正后的For Each配置
将For Each的collection表达式修改为:
<foreach doc:name="For Each" doc:id="5d66e985-11c9-400b-855c-74f9247e7e50" collection="#[%dw 2.0 ns wd xxx.com --- payload.*wd#Report_Entry]"> <logger level="DEBUG" doc:name="Logger" message="APGLPayload #[payload]" /> </foreach>
关键调整说明
- 移除
output application/xml:For Each需要接收可迭代的节点集合,而非XML格式的输出内容。DataWeave作为表达式使用时,默认返回原生数据结构(此处为节点集合),无需指定输出格式。 - 简化路径:根据你的XML示例结构,
payload本身就是<wd:Report_Data>节点,直接用payload.*wd#Report_Entry即可获取所有子节点集合。若payload是完整XML文档,可调整为payload.wd#Report_Data.*wd#Report_Entry。
数据库写入注意事项
拆分后每个迭代的payload是单个<wd:Report_Entry>XML节点,若要以XML格式写入数据库,可直接将节点转换为字符串(比如#[payload as String]),再传入数据库组件完成持久化。
内容的提问来源于stack exchange,提问作者hpandalai
相关产品推荐
相关产品推荐

