【问题标题】:How to generate dynamic XML Response in Mule4?如何在 Mule4 中生成动态 XML 响应?
【发布时间】:2019-12-19 09:06:22
【问题描述】:

在Mule4中,我需要将json样本数据转换为动态XML格式,我尝试过dataweave(2.0)字段映射,得到空值。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 有一个 JSON 到 XML 转换器。你试过吗?
  • 请包括您尝试的内容和结果,以及您的输入和预期输出应该是什么。
  • 显示脚本、输入和输出以便我们理解问题。

标签: mule dataweave


【解决方案1】:

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

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

这是我们的 MuleSoft DataWeave 培训课程中介绍的另一个示例,地址为http://training.mulesoft.com

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

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

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 代码的能力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多