我有一个要求两个将两个相似的xml响应组合成一个xml有效负载。在这里,我将一个xml存储到flowVar中,而另一个则存储在有效负载中。我尝试使用XSLT但没有得到它。以下是xml响应示例。
Response1:
<root>
<token>hhd</token>
<type>xyz</type>
<statement>
<id>1</id>
<name>sri</name>
</statement>
<statement>
<id>2</id>
<name>jay</name>
</statement>
<root>
RESPONSE2:
<root>
<token>hhd</token>
<type>xyz</type>
<statement>
<id>3</id>
<name>paul</name>
</statement>
<statement>
<id>4</id>
<name>nick</name>
</statement>
<root>
在上面两个类似的响应中,我必须在第一个xml响应中添加第二个响应语句标记。除了语句标记之外,所有标记在xmls中都是相同的。我正在使用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>
有没有其他方法可以像使用dataweave那样做。 感谢。
答案 0 :(得分:0)
您可以采用多种方式...例如,如果您使用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>
注意只需确保,如果您要从邮递员发布一个有效负载xml,请确保将Content-Type
定义为application/xml
并设置mime-type
流变量到application/xml
,你存储另一个xml
还要确保你的response1 xml和response2 xml都有效,因为我发现你还没有结束根标记
答案 1 :(得分:0)
最简单的方法就是添加像
这样的对象<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>
希望这有帮助
答案 2 :(得分:0)
结合有效载荷使用,&#34;展平有效载荷&#34;在转换消息中。它将两者结合起来并显示为单个有效载荷。
答案 3 :(得分:0)
我有类似的问题, 我试图将两个xml源(有效载荷一个,变量一个)转换为Java对象(数组列表)。 然后,我用有效负载++ vars.xmlmessage 设置了有效负载 我在此旁边使用了dataweave / transfrom消息将其转换为XML,如下所示:
%dw 2.0
output application/xml
---
{
responsedata: {
message: payload
}
}