首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Mule4中生成动态XML响应?

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

Stack Overflow用户
提问于 2018-08-07 14:01:12
回答 1查看 208关注 0票数 0

在Mule4中,我需要将json样本数据转换为动态XML格式,我已经尝试过dataweave(2.0)字段映射,得到空值。有人能在这方面帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2019-12-19 08:59:49

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

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

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

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

此外,该表达式被配置为基于某些条件读入不同的脚本文件:

代码语言:javascript
复制
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)。

这是script1:

代码语言:javascript
复制
output application/xml 
--- 
root: { message: "order " 
++ attributes.queryParams.orderid 
++ " has been received from " 
++ uName, items: payload.items} 

这是script2:

代码语言:javascript
复制
output application/json 
--- 
root: {  message: "Order2 " 
++ attributes.queryParams.orderid 
++ " has been received from " 
++ uName, items: payload.items}

请注意,此示例很危险。它允许web客户端将任何DataWeave代码注入到Mule流中,所以这个示例不应该被复制到生产代码中,但它确实展示了运行传递到Mule流中的任何DataWeave代码的能力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51719793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档