如何在mule中将2个xml合并到单个xml负载中
我有一个要求,将两个相似的xml响应组合成一个xml负载。在这里,我将一个xml存储到flowVar中,另一个存储在有效负载中。我尝试使用XSLT,但没有得到它。下面是示例xml响应 答复1:如何在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>
<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="<root><token>hhd</token><type>xyz</type><statement><id>3</id><name>paul</name></statement><statement><id>4</id><name>nick</name></statement></root>" 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
}
}