如何在Mule4中生成动态XML响应?

时间:2018-08-07 06:01:12

标签: mule dataweave

在Mule4中,我需要将json样本数据转换为动态XML格式,我尝试使用dataweave(2.0)字段映射来获取空值。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

如果问题只是要从JSON输入中构建XML输出,那是一个相当开放的问题。您想动态评估什么?例如,您可以使用部分有效负载来设置DataWeave表达式中的值。

这个问题有一个更困难的版本:如何动态评估构造到输入字符串中的DataWeave代码,其中可以从各种脚本文件中读取该字符串,甚至可以从某些输入数据(有效载荷,属性,或变量)。

这里是http://training.mulesoft.com的MuleSoft DataWeave培训课程中介绍的另一个示例。

您可以使用动态评估组件来动态评估构造的DataWeave表达式字符串。这是一个用动态值替换uName参数的示例。

enter image description here

此外,该表达式被配置为根据某些条件读取不同的脚本文件:

output application/json 
--- 
do {
    var choice = attributes.queryParams.script default "NO_SCRIPT"
    ---
    if(choice == "NO_SCRIPT") 
    "output application/json --- {result: 'NO SCRIPT ENTERED'}"
    else if(choice == "script1") vars.script1
    else if (choice == "script2")  vars.script2
    else read(choice)
}

这是两个示例脚本,它们替换uName的值并产生不同类型的输出(XML与JSON)。

这是脚本1:

output application/xml 
--- 
root: { message: "order " 
++ attributes.queryParams.orderid 
++ " has been received from " 
++ uName, items: payload.items} 

这是脚本2:

output application/json 
--- 
root: {  message: "Order2 " 
++ attributes.queryParams.orderid 
++ " has been received from " 
++ uName, items: payload.items}

请注意,此示例很危险。它允许Web客户端将任何DataWeave代码注入到Mule流中,因此,该示例不应复制到生产代码中,但是它确实演示了运行传递到Mule应用程序中的任何DataWeave代码的能力。