Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mule 将解析模板转换器与数据中的数组一起使用_Mule - Fatal编程技术网

Mule 将解析模板转换器与数据中的数组一起使用

Mule 将解析模板转换器与数据中的数组一起使用,mule,Mule,我是Mulesoft的新手,希望通过解析模板转换器将Json对象转换为XML对象。但是,直截了当地说,当Json对象有一个元素数量不确定的数组时,什么是合适的方法 例如,如果我有一个JSON对象 {“name”:“Methusela”, “爱好:[ “姓名”:“吉他”, “名称”:“烹饪”, “姓名”:“某物”, ... ]} 在运行时爱好的数量未知的情况下 我的xml模板如下所示: <Person> <Name>#[payload.name]</Name>

我是Mulesoft的新手,希望通过解析模板转换器将Json对象转换为XML对象。但是,直截了当地说,当Json对象有一个元素数量不确定的数组时,什么是合适的方法

例如,如果我有一个JSON对象

{“name”:“Methusela”, “爱好:[ “姓名”:“吉他”, “名称”:“烹饪”, “姓名”:“某物”, ... ]}

在运行时爱好的数量未知的情况下
我的xml模板如下所示:

<Person>
<Name>#[payload.name]</Name>
<Hobbies>
    <!- What should this bit look like -->
</Hobbies>

#[有效载荷.名称]

因此,我的问题是如何将开放式JSON数组转换为XML

请注意,我们目前正在探索社区版,因此无法通过企业版访问可用的数据映射功能


个人感谢,要使用Community edition将Json对象转换为XML对象,我将使用:Json到对象和对象到XML转换器

但是,要使用解析模板对其进行转换,我将使用Mule表达式语言(MEL)。例如:

<Person>
<Name>#[json:name]</Name>
<Hobbies>
#[
    org.json.JSONObject jsonObject = new org.json.JSONObject(payload.toString());
    org.json.JSONArray jsonArray = jsonObject.get("hobbies");
    String hobbies = "";
    for(int i = 0; i < jsonArray.length(); i++) {
        hobbies += "<Name>" + jsonArray.get(i).getString("name") + "</Name>";
    }
    hobbies;
]
</Hobbies>
</Person>

#[json:name]
#[
org.json.JSONObject JSONObject=new org.json.JSONObject(payload.toString());
org.json.JSONArray JSONArray=jsonObject.get(“爱好”);
字符串=”;
for(int i=0;i
就个人而言,要使用Community edition将Json对象转换为XML对象,我将使用:Json到对象和对象到XML转换器

但是,要使用解析模板对其进行转换,我将使用Mule表达式语言(MEL)。例如:

<Person>
<Name>#[json:name]</Name>
<Hobbies>
#[
    org.json.JSONObject jsonObject = new org.json.JSONObject(payload.toString());
    org.json.JSONArray jsonArray = jsonObject.get("hobbies");
    String hobbies = "";
    for(int i = 0; i < jsonArray.length(); i++) {
        hobbies += "<Name>" + jsonArray.get(i).getString("name") + "</Name>";
    }
    hobbies;
]
</Hobbies>
</Person>

#[json:name]
#[
org.json.JSONObject JSONObject=new org.json.JSONObject(payload.toString());
org.json.JSONArray JSONArray=jsonObject.get(“爱好”);
字符串=”;
for(int i=0;i
在解析模板中,您可以使用简单的javascript循环:

for(i=0;i<#[payload.Hobbies].length;i++){
document.getElementById('Id').innerHtml += #[payload.Hobbies][i] 
}

for(i=0;i在解析模板中,您可以使用简单的javascript循环:

for(i=0;i<#[payload.Hobbies].length;i++){
document.getElementById('Id').innerHtml += #[payload.Hobbies][i] 
}

用于(i=0;iHi@Sulthony感谢您的响应。我们不能直接使用默认转换器,因为两者之间的模式不一样。您的解决方案可能会起作用,但我不希望为了构建节点而进行任何字符串连接。是否可以声明迭代变量并在循环中调用该变量?此外,此age是LinkedHashMap,所以我想知道这是否会改变您建议的解决方案。您可以使用XML解析器替换字符串连接。通过使用MEL,您可以根据需要编写转换代码。我的回答只是为了说明如何使用它。您好@Sulthony感谢您的响应。我们不能直接使用默认转换器作为模式两者之间并不相同。您的解决方案可能会起作用,但我不希望为了构建节点而进行任何字符串连接。是否可以声明一个迭代变量并在循环中调用它?此外,此阶段的有效负载类型是LinkedHashMap,因此我想知道这是否会改变您建议的解决方案您可以替换字符串concatena通过使用MEL,您可以根据需要编写转换代码。我的回答只是为了说明如何使用它。