You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WSO2 Integration Studio中用Smooks读取竖线分隔TXT文件或转CSV

问题解答

1. 直接用Smooks读取|分隔的TXT文件

完全可以,这类文件本质就是自定义分隔符的CSV格式,csv-reader组件不依赖文件扩展名,只需要正确配置分隔符即可。你当前的Smooks配置已经是正确的:

<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="Smooks-config-file" xmlns="http://ws.apache.org/ns/synapse">
    <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:csv="http://www.milyn.org/xsd/smooks/csv-1.5.xsd">
        <csv:reader fields="SYS_CD,PRO_CD,LOC_CD,AVA_QTY,RESQTY,PRO_QTY" separator="|" skipLines="1"/>
    </smooks-resource-list>
</localEntry>
  • separator="|" 指定了分隔符为竖线,匹配你的文件格式
  • skipLines="1" 跳过表头行,正确解析数据行
  • Proxy中的Smooks调用配置也没问题,确保输入的TXT文本能正确传入即可。

2. 在WSO2 Integration Studio中转成CSV文件

如果确实需要将这类TXT转成标准逗号分隔的CSV文件,有两种简单方法:

方法一:利用Smooks+Payload Factory生成CSV内容

  1. 先用上述Smooks配置将TXT解析为XML
  2. 用Payload Factory Mediator将XML转换为逗号分隔的文本格式:
<payloadFactory media-type="text">
    <format>$1,$2,$3,$4,$5,$6</format>
    <args>
        <arg evaluator="xml" expression="//SYS_CD"/>
        <arg evaluator="xml" expression="//PRO_CD"/>
        <arg evaluator="xml" expression="//LOC_CD"/>
        <arg evaluator="xml" expression="//AVA_QTY"/>
        <arg evaluator="xml" expression="//RESQTY"/>
        <arg evaluator="xml" expression="//PRO_QTY"/>
    </args>
</payloadFactory>
  1. 再用File Mediator将生成的文本保存为.csv扩展名的文件。

方法二:直接替换分隔符并重命名

如果不需要解析内容,只是简单替换分隔符和扩展名,可以用脚本Mediator(比如JavaScript)替换文本中的|为,, 再通过File Mediator指定输出文件名为.csv:

var payload = mc.getPayloadXML().toString();
var csvPayload = payload.replace(/\|/g, ",");
mc.setPayloadXML(new XML(csvPayload));

内容的提问来源于stack exchange,提问作者Ruby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:30:55