Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Dataweave中合并xml响应和json响应的问题_Json_Mule_Dataweave_Mule Esb - Fatal编程技术网

在Dataweave中合并xml响应和json响应的问题

在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 =

我从一个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 = 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!!