如何在WSO2 ESB上使用烟雾将XML转换为CSV文件?

问题描述 投票:0回答:1

我在ESB上有一个接收XML负载的代理,并且我需要将此负载发送到仅接受CSV文件的另一软件。

所以我需要将此XML有效负载转换为CSV文件,但要使用Smooks。我知道如何将CSV转换为XML,但反之我在网上找不到任何东西。当我尝试在Developer Studio上创建它时,没有CSV输出文件的选项。

[我知道如何使用XSLT转换将XML转换为CSV,但是我的工作量很大,在这种情况下,我认为Smooks比XSLT更好。

wso2esb transformation esb smooks
1个回答
0
投票

在Smooks 1.7中,您可以使用FreeMarker墨盒从XML转换为CSV:

<?xml version='1.0' encoding='UTF-8'?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
                      xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd">

    <resource-config selector="record">
        <resource>org.milyn.delivery.DomModelCreator</resource>
    </resource-config>

    <ftl:freemarker applyOnElement="record">
        <ftl:template>account.ftl</ftl:template>
    </ftl:freemarker>

</smooks-resource-list>

FreeMarker访问者无法直接读取XML流,因此需要配置DOM访问者,使其从输入流中找到的记录元素创建DOM。 account.ftl模板可以如下:

<#ftl ns_prefixes={"ossandme":"http://ossandme.org"}>
${record['ossandme:First_Name']}~${record['ossandme:Last_Name']}~${record['ossandme:ShippingStreet']}~${record['ossandme:ShippingCity']}~${record['ossandme:ShippingState']}~${record['ossandme:ShippingPostalCode']}~${record['ossandme:Member_Tier__c']}

来源:https://oncodesign.io/2014/09/16/the-trials-of-smooks/

© www.soinside.com 2019 - 2024. All rights reserved.