如何在Mule 4中提取文本文件指定位置含BR的行并输出
Mule 4 文本文件处理:提取指定行并保留头部
实现步骤
1. 读取文本文件
使用File Connector的Read操作读取目标文本文件,关键配置:
- File Path:指定待处理文件的路径
- Encoding:匹配文件编码(如
UTF-8) - Return Type:选择
String,确保读取完整文本内容
2. 文本拆分与过滤(DataWeave核心处理)
在Transform Message组件中用DataWeave 2.0完成逻辑处理,代码如下:
%dw 2.0 output application/text --- // 按换行符拆分文本为行数组,兼容Windows/Unix换行格式 var lines = payload splitBy /\r?\n/ // 保留前2行作为头部 var headerLines = lines[0 to 1] // 过滤其余行:仅保留第3、4个字符(0-based索引2-4)为"BR"的行 var filteredDataLines = lines[2 to -1] filter ((line) -> line as String length >= 4 and (line substring(2, 4) == "BR") ) // 合并头部与过滤后的行,还原文本格式 (headerLines ++ filteredDataLines) joinBy '\n'
3. 输出处理结果
将处理后的纯文本发送至目标系统,可根据需求选用对应连接器(如File、HTTP等),确保输出格式为纯文本。
逻辑说明
- 换行兼容:用正则
/\r?\n/拆分,避免因系统差异导致的换行符问题 - 头部保留:直接提取数组前2行,对应输入文件的标题行和分隔行
- 行过滤:先判断行长度避免索引越界,再通过
substring(2,4)定位第3、4个字符(1-based),匹配"BR"后保留该行 - 格式还原:用
joinBy('\n')将数组重新组合为带换行的纯文本
验证结果
代入输入文本后,将输出你期望的内容:
1BoraBora Island 0000000000000000000000 1 BR 67854 JAIHIND 789 000Y247 9898983 2 BR CR9 BoraBora 123 QK J12Y64 00010520
内容的提问来源于stack exchange,提问作者Avinash
相关产品推荐
相关产品推荐

