mule - 将 json 数据转换为 xml 时遇到问题 : mule esb

标签 mule mule-studio mule-component

我尝试将 json 数据转换为 xml 格式。但只有一半的数据被转换成xml。

我的有效负载是

{"orders":[{"orderName":"Laptop","price":34000,"Date":"2014/01/12","Type":"DELL","stock":52,"code":"152666AS"},

    {"orderName":"Chip","price":345,"Date":"2014/02/20","Type":"DELL","stock":50,"code":"152666AW"},

    {"orderName":"Laptop1","price":35000,"Date":"2015/02/13","Type":"DELL1","stock":51,"code":"152666AX"}]}

但在输出中我只得到一个 json 项

    <?xml version='1.0'?>
<orders>
<orderName>Laptop</orderName>
<price>34000</price>
<Date>2014/01/12</Date>
<Type>DELL</Type>
<stock>52</stock>
<code>152666AW</code>
</orders>

我的流程如下

<flow name="testFlow">
        <http:listener config-ref="HTTP_Quickbook" path="/" doc:name="HTTP"/>
        <connector-test:my-processor config-ref="ConnectorTest__Configuration_type_strategy" content="APP" doc:name="ConnectorTest"/>
        <json:json-to-xml-transformer  mimeType="application/json" doc:name="JSON to XML"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>

</flow>

我需要 xml 格式的整个 json 字符串。我必须改变什么?

我测试了创建自定义变压器。我的自定义变压器如下

InputStream input = new FileInputStream(new File("test.json"));
            OutputStream output = System.out;
            XMLInputFactory inputFactory = XMLInputFactory.newInstance();
            inputFactory.setProperty(XMLInputFactory.IS_COALESCING, true);
            XMLEventReader reader = inputFactory.createXMLEventReader(input);

            XMLOutputFactory outputFactory = new JsonXMLOutputFactory();
            outputFactory.setProperty(JsonXMLOutputFactory.PROP_PRETTY_PRINT, true);
            XMLEventWriter writer = outputFactory.createXMLEventWriter(output);

            writer = new XMLMultipleEventWriter(writer, false,"/orders");

            writer.add(reader);

            reader.close();
            writer.close();

现在我收到以下错误

com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]

如何解决这个问题?

最佳答案

我可以建议你一件事来满足你的要求。

如果你想从 json 生成 xml。

执行以下操作

将 set-payload 组件添加到您的流程中,并将值明确指定为

{"root":#[payload]}

它会起作用,我可以从您粘贴的示例数据中生成 xml 数据。

请尝试发布您的状态

关于mule - 将 json 数据转换为 xml 时遇到问题 : mule esb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28582061/

相关文章:

mule - 如何在 MUnit 中使用内部负载 (error.errorMessage.payload) 引发自定义错误

mule - 无法获取 Mule 流引用来识别从外部 jar 导入的资源(外部流)

java - 配置 Mule JPA 模块以使用 Eclipse Link 和 MySQL

gradle - gradle:将zip复制到mule应用

mule - 空节点的 Dataweave 错误

xml - 如何验证 mule esb 中的架构?

java - 如何在 Mule + Jersey + Spring 中注册自定义异常映射器?

mysql - 读取 .csv 文件并将值插入到 mulesoft 中的 MySQL 数据库中

web-services - 如何在 Mule 中显示来自 Web 服务的错​​误而不是 Mule 的错误消息

java - Mule Zip 文件并将压缩文件发送到 FTP 服务器