在Dataweave中合并xml响应和json响应的问题
我从一个soap服务获得以下xml响应:在Dataweave中合并xml响应和json响应的问题,json,mule,dataweave,mule-esb,Json,Mule,Dataweave,Mule Esb,我从一个soap服务获得以下xml响应: 1. 0 0 测试1 索引数据 48x48_GIF 180x180_GIF 1. 0 0 测试23 索引数据 90x90_GIF 250x250_GIF 我将假设您的XML有一个名为idc:root的根标记。我首先要做的是按idc:dDocName对XML进行分组。这将允许您在需要时提取renditionResp变量的正确部分 然后,脚本的其余部分将如下所示: %dw 1.0 %output application/json %var docs =
1.
0
0
测试1
索引数据
48x48_GIF
180x180_GIF
1.
0
0
测试23
索引数据
90x90_GIF
250x250_GIF
我将假设您的XML有一个名为idc:root的根标记。我首先要做的是按idc:dDocName
对XML进行分组。这将允许您在需要时提取renditionResp
变量的正确部分
然后,脚本的其余部分将如下所示:
%dw 1.0
%output application/json
%var docs = flowVars.renditionResp."idc:root" groupBy $."idc:dDocName"
---
{
"packshots": (payload.searchResults pluck ((value) -> {
"ID": value.xAH_StoreItemNumber,
"ImageID": value.dID,
"Name": value.dDocName,
"Owner": value.dDocOwner,
"Author": value.dDocAuthor,
"Creator": value.dDocCreator,
"links": docs[flowVars.CurrentName] map ((link) -> {
"rel": link."idc:field".@extRenditionName,
"href": "/abc" ++ link."idc:field".@extRenditionName
})
})
}
看起来您假设XML和JSON都是有效负载
,但它们不能是。您应该使用enricher来包围其中一个请求,并将响应设置为flowVar
。Hello Jerney,很抱歉,这是一个类型,soap响应确实在flow变量中,而另一个在payload中。但它不起作用。我也已经更正了代码段。很抱歉,我第一次没有注意到这一点,但是您的XML文档有两个根(idc:document
),并且应该只有一个根。您确定这是正确的响应吗?是的,jerney,此服务正在循环中调用,结果将被捕获到数组列表中。在循环之后,我进行了一次转换,我希望实现上面的json!!