CSV 端口可以将逗号分隔值 (CSV) 文件转换为 XML,也可以从 XML 生成 CSV 文件。
核心功能
- 支持 CSV/XML 双向转换,具有可配置的分隔符和编码
- 具有标头检测和自定义列映射能力
- 支持各种字符编码和特殊字符处理
端口配置
本节包含所有可配置的端口属性。
与端口 Id 和描述相关的设置。
| 设置 | 描述 |
|---|
| 端口 Id | 端口的静态、唯一标识符。 |
| 端口类型 | 显示端口类型及其用途的描述。 |
| 端口描述 | 一个可选字段,用于提供端口及其在流中的角色的自由格式描述。 |
端口设置
与端口核心操作相关的设置。
其他设置
未包含在先前类别中的设置。
| 设置 | 描述 |
|---|
| 本地文件方案 | 用于为端口输出的消息分配文件名的方案。可以在文件名中动态使用宏来包含标识符和时间戳等信息。有关更多信息,请参阅 宏。 |
| 行分隔符 | 用于表示行结束的字符序列。默认情况下,这由系统决定,但可以使用此设置覆盖系统行为。使用 CR 或 \r 表示回车符,使用 LF 或 \n 表示换行符。 |
示例文件选项卡
上传示例文件可以方便地在任何连接的 CSV Map 或 XML Map 端口中进行映射。
使用 示例文件 选项卡生成用于 CSV Map 或 XML Map 端口的源或目标 XML 模板。单击 添加示例文件。
- 如果您已有反映数据预期格式和结构的示例文件,请选择 文件上传 并浏览到您的文件。或者,选择 手动创建 直接在应用程序中创建文件。如果您选择 手动创建,请为示例文件命名。单击 下一步。
- 如果您浏览到现有文件,查看文件 选项卡将填充其内容。如果您选择手动创建文件,请在此选项卡上输入示例数据。单击 下一步。
- 翻译和预览 选项卡显示将示例数据转换为 XML 的预览。当您对示例满意时,单击 添加。
高级页面 (Advanced Tab)
| 设置 | 描述 |
|---|
| 延迟处理 | 放置在交易选项卡中的文件的处理被延迟的时间量(以秒为单位)。这是一个遗留设置。最佳实践是使用 File 端口来管理本地文件系统,而不是此设置。 |
消息设置确定端口如何搜索消息并在处理后管理它们。
| 设置 | 描述 |
|---|
| 保存到已发送文件夹 | 选中此项可将端口处理的文件复制到该端口的“已发送”文件夹中。 |
| 已发送文件夹方案 | 端口根据选定的时间间隔对 已发送 文件夹中的文件进行分组。例如,Weekly 选项指示端口每周创建一个新的子文件夹,并将本周发送的所有文件存储在该文件夹中。空白设置告诉端口将所有文件直接保存在 已发送 文件夹中。对于处理许多事务的端口,使用子文件夹可以帮助保持文件有序并提高性能。 |
用于管理日志创建和存储的设置。
| 设置 | 描述 |
|---|
| 日志级别 | 指定要记录在端口日志目录中的信息类型:- None - 不创建任何日志。
- Error - 仅当端口遇到错误时才创建日志。
- Warning - 仅当端口发出警告时才创建日志。
- Info - 记录工作流的一般信息,包括任何错误和警告(如果适用)。
- Debug - 记录成功和失败工作流的详细调试信息。
- Trace - 记录成功和失败工作流的详细跟踪信息。
请注意:Debug 和 Trace 级别的日志可能会记录敏感信息,包括消息内容和 SSL 证书。尽管连接属性(例如密码)被屏蔽了,但在与您的组织外部共享它们之前,请查看此级别的日志以避免泄漏敏感信息。 |
| 日志文件夹结构 | 指示端口根据选定的时间间隔将日志文件夹中的文件分组。例如,Weekly 选项指示端口每周创建一个新的子文件夹,并将该周的所有日志存储在该文件夹中。空白设置告诉端口将所有日志直接保存在日志文件夹中。对于处理许多事务的端口,使用子文件夹有助于保持日志的有序性并提高性能。 |
| 保留消息副本 | 指示端口在日志目录中保存最新消息副本的切换。请注意,端口每个子文件夹只保留一个消息,并且端口在再次运行时会覆盖以前保存的消息。 |
其他设置
特殊设置适用于特定用例。
| 设置 | 描述 |
|---|
| 其他设置 | 允许在以分号分隔的列表中配置隐藏的端口设置,例如 setting1=value1;setting2=value2。正常的端口用例和功能不需要使用这些设置。 |
自动化页面 (Automation Tab)
自动化设置
与端口自动处理文件相关的设置。
| 设置 | 描述 |
|---|
| 发送 (Send) | 到达端口的消息是否自动进行处理。 |
与端口资源分配相关的设置。
| 设置 | 描述 |
|---|
| 最大工作线程数 | 此端口上处理文件时从线程池中消耗的最大工作线程数。如果设置,则会覆盖 高级设置 页面的 性能设置 部分的默认设置。 |
| 最大文件数 | 分配给端口的每个线程发送的最大文件数。如果设置,则会覆盖 高级设置 页面的 性能设置 部分的默认设置。 |
通知选项卡
SLA 选项卡
将 CSV 转换为 XML
当 CSV 文件转换为 XML,得到的 XML 将包含以下结构:
原始文件中的每一行(记录)都成为根元素 Items 的子元素。所有记录元素的名称由端口设置中设置的 记录名称 选项确定。每个记录元素都有与输入文件每行中的值相对应的子元素。
某些 CSV 文件包含一行消息头信息,为文件中的值提供上下文。当启用 存在列标题 设置时,将解析此标题行,并将解析后的标题用作值元素(记录元素的子元素)的元素名称。否则,值元素将被赋予通用名称,例如 field_0、field_1 等。
将 XML 转换为 CSV
要将 XML 转换为 CSV 文件,输入 XML 必须具有“平面”结构。这意味着,忽略 Items 根元素,XML 结构的深度为 2。例如:
XML 解释如下:
- 根元素的子元素在结果文件中被视为记录(行)
- 每个记录元素的子元素被视为每行中的值
如果启用 存在列标题 选项,则会将标题行插入到生成的 CSV 文件中,其中包含每个值元素的名称,以提供值的上下文。在上面的示例中,此标题行将由 title、year 和 runtime 组成。
打印视图
CSV 转换:使用 XML Map 端口
CSV 运算器
除了知行之桥提供的操作之外,端口还可以提供将功能扩展到 ArcScript 中的操作。
这些端口操作可以像任何其他 ArcScript 操作一样调用,但有两个细节除外:
- 它们必须通过
connector.rsc 端点调用。
- 它们必须包含认证令牌。
例如,使用这两条规则调用端口操作可能如下所示:
下面列出了 CSV 端口功能特定的操作。
csvListRecords
循环遍历指定 CSV 文件或字符串中的每条记录。有关更多详细信息,请参阅函数。
必需参数
可选参数
- data: 如果 CSV 数据以字符串形式存在,而不是存储在 CSV 文件中,请使用此参数代替 file。
- columns: 输出中要包含的列的逗号分隔列表(如果未指定,将包含所有列)。
- requireheader: 默认情况下,数据的第一行会被解释为列标题;向此参数传入 false 时,将使用通用列名(例如 c1、c2、c3)。
csvListRecords 操作中的任何脚本都会执行多次:对输入 CSV 文件/数据中的每条记录/行执行一次。在操作中,可以使用 csv 格式化器访问各个 CSV 值。此格式化器将列名作为参数,并输出当前记录中该列的值。
例如,假设 CSV 输入数据包含订单中购买的一组商品,商品名称保存在 ItemName 列中。以下脚本生成 XML,在 Item 元素中包含每个 ItemName 值: