Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
如何在mule中将2个xml合并到单个xml负载中_Xml_Xslt_Mule_Dataweave - Fatal编程技术网

如何在mule中将2个xml合并到单个xml负载中

如何在mule中将2个xml合并到单个xml负载中,xml,xslt,mule,dataweave,Xml,Xslt,Mule,Dataweave,我有一个要求,将两个相似的xml响应组合成一个xml负载。在这里,我将一个xml存储到flowVar中,另一个存储在有效负载中。我尝试使用XSLT,但没有得到它。下面是示例xml响应 答复1: <root> <token>hhd</token> <type>xyz</type> <statement> <id>1</id> <name>sri</name>

我有一个要求,将两个相似的xml响应组合成一个xml负载。在这里,我将一个xml存储到flowVar中,另一个存储在有效负载中。我尝试使用XSLT,但没有得到它。下面是示例xml响应

答复1:

<root>
 <token>hhd</token>
 <type>xyz</type>
 <statement>
   <id>1</id>
   <name>sri</name>
 </statement>
 <statement>
   <id>2</id>
   <name>jay</name>
 </statement>
<root>

***
xyz
1.
斯里兰卡
2.
松鸦
答复2:

<root>
 <token>hhd</token>
 <type>xyz</type>
 <statement>
   <id>3</id>
   <name>paul</name>
 </statement>
 <statement>
   <id>4</id>
   <name>nick</name>
 </statement>
<root>

***
xyz
3.
保罗
4.
刻痕
在上面两个类似的响应中,我必须在第一个xml响应中添加第二个响应语句标记。我正在使用XSLT,但无法做到这一点

输出:

<root>
 <token>hhd</token>
 <type>xyz</type>
 <statement>
   <id>1</id>
   <name>sri</name>
 </statement>
 <statement>
   <id>2</id>
   <name>jay</name>
 </statement>
 <statement>
   <id>3</id>
   <name>paul</name>
 </statement>
 <statement>
   <id>4</id>
   <name>nick</name>
 </statement>
<root>

***
xyz
1.
斯里兰卡
2.
松鸦
3.
保罗
4.
刻痕
有没有其他方法可以像使用dataweave一样进行此操作。
谢谢。

你可以用很多方法。。。例如,如果使用Dataweave,则可以使用以下Dataweave脚本进行求解:-

在这里,我将一个xml负载(比如xml2)存储在流变量数据中,另一个xml存储在负载中

<set-variable variableName="data" value="&lt;root&gt;&lt;token&gt;hhd&lt;/token&gt;&lt;type&gt;xyz&lt;/type&gt;&lt;statement&gt;&lt;id&gt;3&lt;/id&gt;&lt;name&gt;paul&lt;/name&gt;&lt;/statement&gt;&lt;statement&gt;&lt;id&gt;4&lt;/id&gt;&lt;name&gt;nick&lt;/name&gt;&lt;/statement&gt;&lt;/root&gt;" doc:name="Variable" mimeType="application/xml"/>

  <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[
             %dw 1.0
             %output application/xml 
              ---
            root : {
            token:payload.root.token,
            type:payload.root.type,
            (payload.root.*statement map {
             statement : {
               ($)

                }  
             }),

          (flowVars.data.root.*statement map {
            statement : {
            ($)

          }  
         })

 }]]></dw:set-payload>
        </dw:transform-message>

我得到以下组合输出xml:-

<?xml version='1.0' encoding='windows-1252'?>
<root>
    <token>hhd</token>
    <type>xyz</type>
    <statement>
        <id>1</id>
        <name>sri</name>
    </statement>
    <statement>
        <id>2</id>
        <name>jay</name>
    </statement>
    <statement>
        <id>3</id>
        <name>paul</name>
    </statement>
    <statement>
        <id>4</id>
        <name>nick</name>
    </statement>
</root>

***
xyz
1.
斯里兰卡
2.
松鸦
3.
保罗
4.
刻痕
注意只要确保,如果您是从postman发布一个有效负载xml,请确保将
内容类型
定义为
application/xml
,并将flow变量的
mime类型
设置为
application/xml
,在其中存储另一个xml

还要确保您的response1xml和response2xml都是有效的,因为我可以发现您还没有结束根标记

<dw:transform-message doc:name="Transform Message" >
            <dw:input-payload mimeType="application/xml"/>
            <dw:set-payload><![CDATA[%dw 1.0
%output application/xml
---
root : payload.root ++ flowVars.data.root.*statement ]]></dw:set-payload>
        </dw:transform-message>

希望这有助于在转换消息中结合有效负载使用“展平有效负载”。它将两者结合起来,并显示为单个有效负载。

我也有类似的问题和问题 我尝试将xml源(一个在有效负载中,一个在变量中)转换为Java对象(数组列表)。 然后我将set payload与payload++vars.xmlmessage一起放入 我已使用此旁边的dataweave/transfrom消息转换为XML,如下所示:

%dw 2.0
output application/xml
---
{
  responsedata: {
    message: payload
  }
}