知行之桥EDI系统——FlatFile 端口介绍
© All rights reserved. • 西安知行软件有限公司 • 陕ICP备09022277号
1. 背景
在企业数据交换和集成中,平面文件(Flat File) 是一种基础且广泛使用的数据格式。它以纯文本形式存储,字段通过固定长度(定位分隔)或特定分隔符(字符分隔,如CSV、TSV)来区分。尽管现代系统普遍采用XML、JSON等结构化格式,但大量遗留系统、银行对账单、EDI报文仍依赖平面文件进行数据传输。
FlatFile端口的核心价值在于:提供了一个可视化、低代码的配置界面,让您无需编程即可实现平面文件与XML之间的双向转换,从而高效打通数据孤岛。
2. 设置方法
FlatFile 端口的配置主要涉及定义平面文件的文件类型和行类型,以准确解析输入数据并生成目标格式。以下是两种常见的设置方法:
2.1 定位分隔(Positional Delimited)
定位分隔适用于字段长度固定的平面文件。在这种模式下,每个数据字段通过其在行中的起始位置和长度来定义。以下是一个配置示例:
输入文件示例:
H00000000120250730
DABC012
DDEF034
输入文件说明:
- H 行(头记录):
- 第 1 位(索引 0):控制字段,值为 H
- 第 2~10 位(索引 1,长度 9):订单号,000000001:
- 第 11~18 位(索引 10,长度 8):日期,20250730
- D 行(明细记录):
- 第 1 位(索引 0):控制字段,值为 D。
- 第 2~4 位(索引 1,长度 3):产品代码,ABC。
- 第 5~7 位(索引 4,长度 3):数量,012。
配置步骤:
- 文件类型选择“定位分隔”。
- 多行模式启用,允许处理包含多种行类型的文件。
- 定义每种行类型的字段:
- H 行:
- 控制字段:索引值 0,长度 1(用于识别 ‘H’)。
- OrderNumber:索引值 1,长度 9。
- Date:索引值 10,长度 8。
- D 行:
- 控制字段:索引值 0,长度 1(用于识别 ‘D’)。
- ProductCode:索引值 1,长度 3。
- Quantity:索引值 4,长度 3。
- H 行:

输出 XML 文件示例:
<Items>
<H>
<OrderNumber>000000001</OrderNumber>
<Date>20250730</Date>
</H>
<D>
<ProductCode>ABC</ProductCode>
<Quantity>012</Quantity>
</D>
<D>
<ProductCode>DEF</ProductCode>
<Quantity>034</Quantity>
</D>
</Items>
嵌套行类型设置: 在“设置”中启用“嵌套行类型(Nest new line types)”选项,可以将子记录(如 D 行)嵌套到其父记录(如 H 行)之下,形成更符合逻辑的 XML 结构。

启用后,输出将变为:
<Items>
<H>
<OrderNumber>000000001</OrderNumber>
<Date>20250730</Date>
<D>
<ProductCode>ABC</ProductCode>
<Quantity>012</Quantity>
</D>
<D>
<ProductCode>DEF</ProductCode>
<Quantity>034</Quantity>
</D>
</H>
</Items>
2.2 字符分隔(Character Delimited)
字符分隔适用于字段之间通过特定字符(如逗号、制表符或空格)进行分隔的平面文件。以下是一个配置示例:
输入文件示例:
I 000000001 20250730 ABC 012
I 000000001 20250730 DEFG 034
FlatFile 端口配置步骤:
- 文件类型选择“字符分隔”。
- 指定分隔符(例如,本例中为空格)。
- 控制字段与行类型: 添加行类型,控制字段值填 I(每行的起始字段),然后按顺序添加字段:OrderNumber、Date、ProductCode、Quantity。端口会按索引顺序自动匹配。

输出 XML 文件示例:
<Items>
<I>
<OrderNumber>000000001</OrderNumber>
<Date>20250730</Date>
<ProductCode>ABC</ProductCode>
<Quantity>012</Quantity>
</I>
<I>
<OrderNumber>000000001</OrderNumber>
<Date>20250730</Date>
<ProductCode>DEFG</ProductCode>
<Quantity>034</Quantity>
</I>
</Items>
2.3 双向转换
以上示例主要演示了 平面文件 → XML 的转换方向。FlatFile 端口同样支持 反方向(XML → 平面文件) 的转换,规则完全基于同一套配置,只需注意以下几点:
-
输入要求:送入端口输入文件夹的 XML 文件,其结构必须与端口配置完全匹配,即根元素为
<Items>,行元素名(如<H>、<D>)和字段元素名(如<OrderNumber>)必须与你在行类型中定义的“控制字段值”和“字段名称”完全一致。 -
自动输出:端口会根据行类型的字段定义,自动将 XML 数据按顺序和长度(或分隔符)生成对应的平面文件。对于定位分隔模式,字段值长度不足时,端口会自动用“填充字符”(默认为空格)补齐;超出长度时,则会截断。
-
控制字段处理:XML 中的行元素名(如
<H>)即作为控制字段值,端口会将其转换为平面文件每行开头的控制字符。
示例:将上方嵌套示例中生成的 XML 文件放入该 FlatFile 端口的输入文件夹,端口会自动还原出原始的定长平面文件:
H00000000120250730
DABC012
DDEF034
这一双向机制确保了同一个端口配置可以同时用于解析传入的平面文件和生成外发的平面文件,实现一次配置、双向复用的效果。
3. 适用场景与典型案例
FlatFile 端口凭借其“低代码、双向转换、配置化”的特性,成为企业消除“数据孤岛”和自动化数据流转的核心工具。以下是其最典型的应用场景:
-
遗留系统(Legacy System)集成
- 痛点:许多大型企业的传统 ERP、核心账务系统或大型机(Mainframe)缺乏现代化 API(如 REST/GraphQL),仅支持导出或读取固定格式的文本文件。
- 解决方案:利用 FlatFile 端口的定位分隔模式精确解析旧系统产生的定长报表,将其转化为现代系统易于处理的 XML 结构,实现新旧系统的无缝对接。
-
金融与银企直联数据交互
- 典型业务:银行对账单(如 MT940 明细)、批量扣款/发薪文件、资金清算报文。
- 价值:这类文件对字段位置和格式校验极严格。利用 FlatFile 端口的定长解析与自动填充/截断机制,可极大地降低数据对齐出错率。
-
大数据与 ETL 数据清洗预处理
- 应用:数据仓库、商业智能(BI)或海量日志分析的前置预处理。
- 价值:在将多源异构的文本数据导入数据库或数据湖前,利用 FlatFile 端口进行结构化提炼和字段映射,规避由于文本格式混淆导致的入库报错。
-
第三方无 API 系统的对接(FTP/SFTP 自动化)
- 应用:物流厂商、第三方仓储(WMS)、供应商系统等通过 FTP 服务器共享的数据文件。
- 价值:结合FTP/SFTP等端口,可实现“定时拉取文件 -> FlatFile 解析 -> 写入内部系统”的全自动流水线作业。
💡 选型建议(何时使用 FlatFile 端口?)
- 推荐使用:数据结构固定(定长或固定分隔符)、无复杂的嵌套循环分支逻辑、文件偏中小型或需快速搭建接口的场景。
- 不推荐使用:数据完全非结构化(如纯自由文本)、嵌套层级极其复杂且不固定的 XML/JSON,或需要高频毫秒级 RPC 响应的实时微服务调用场景。
4. 总结
FlatFile 端口为企业异构系统间的数据交换提供了低代码、高可靠的解析与转换方案。其核心价值在于:
-
全模式覆盖:精准适配定长(定位分隔)与自定义符号(字符分隔)等各类平面文件。
-
一次配置,双向复用:无缝支持“平面文件 ↔ XML”的双向自动转换。
-
降本增效:免去繁琐的代码编写与维护,显著缩短项目集成周期与运维成本。
作为数据集成链路中的关键中间件,FlatFile 端口让遗留系统与现代数据架构的无缝对接变得更加简单、高效。


