65.9K
CodeProject 正在变化。 阅读更多。
Home

消除 BizTalk 2004 中平面文件架构的复杂性 - 第 1 部分

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.19/5 (11投票s)

2006年2月28日

7分钟阅读

viewsIcon

71464

downloadIcon

210

一篇解释如何在 BizTalk Server 2004 中编写各种平面文件架构的文章。

简介 - 首先!

本文是关于在 BizTalk Server 2004 中编写平面文件架构系列文章的第一部分。平面文件架构以其复杂和神秘而闻名。本文将试图消除编写平面文件架构的所有担忧。

平面文件结构

与 XML 文件不同,平面文件没有任何可见的固有结构。平面文件的结构从其使用中显而易见,并且需要一些领域知识才能理解其表示。平面文件结构可以是多种类型

  1. 分隔平面文件。
  2. 位置平面文件。
  3. 包含分隔记录和位置记录组合的平面文件。

让我们举一些平面文件的例子并理解其结构。

示例 1 - “TAB”分隔平面文件

JOHN DOE    1964-10-05    CLAYTON
ROBERT B    1978-11-10    EDWARD STREET
JOHN LENON    1927-02-30    WORTHING
EDMOND DANTES    1910-09-12    COVENTRY
SIR CHAMBERS    1934-05-18    HARRODS
  1. 在上面的示例中,有 5 行,每行代表一条“记录”信息。
  2. 一条“记录”由多个“字段”组成。在示例中,“字段”是“姓名”、“出生日期”和“籍贯”。
  3. 每个“字段”由一个“TAB”空格分隔,该空格充当每个“字段”的“分隔符”。
  4. 每“行”由一个“CRLF”(回车和换行的组合)分隔。此“CRLF”组合适用于“基于 Windows”的系统。对于“基于 UNIX”的系统,仅使用“换行符”(LF)。

示例 2 - 逗号 (,) 分隔平面文件

JOHN DOE, 1964-10-05, CLAYTON
ROBERT B, 1978-11-10, EDWARD STREET
JOHN LENON, 1927-02-30, WORTHING
EDMOND DANTES, 1910-09-12, COVENTRY
PETER JAMES,  , GATWICK
SIR CHAMBERS, 1934-05-18, HARRODS
  1. 这种结构与示例 1 中使用的结构非常相似。不同之处在于每个字段由一个逗号 (,) 分隔,该逗号充当每个字段的分隔符。
  2. 第四行“出生日期”字段没有值,但即使如此,逗号也存在。这被称为占位符,基本上,逗号的存在表示该字段没有值。

示例 3 - 位置平面文件

12345678901234567890123456789012345678901234567890
JOHN DOE            1964-10-05CLAYTON             
ROBERT B            1978-11-10EDWARD STREET       
JOHN LENON          1927-02-30WORTHING            
EDMOND DANTES       1910-09-12COVENTRY            
SIR CHAMBERS        1934-05-18HARRODS
  1. 位置平面文件是指其字段放置在位置(列)中,并且字段长度是固定大小的文件。在上面的示例中,“姓名”字段的固定大小为 20 个字符,“出生日期”字段的固定大小为 10 个字符,“籍贯”的固定大小为 20 个字符。
  2. 位置平面文件记录必须始终是分隔记录的子记录。为父分隔记录指定的分隔符字符不得出现在子位置记录的数据中。无法在子位置字段的数据中转义父分隔记录的分隔符字符。

创建 BizTalk 平面文件架构解决方案

在 Visual Studio 中创建新的 BizTalk Server 解决方案。

步骤 1:在 Visual Studio .NET 菜单中,选择 文件 -> 新建 -> “空解决方案”并键入名称 “FFSchemas”

步骤 2:在解决方案资源管理器中,右键单击解决方案名称“FFSchemas”并选择 添加 -> 新建项目。在“添加项目”对话框中,对于项目类型,选择“BizTalk 项目”。选择模板“空 BizTalk 项目”并创建一个名为“FlatFileSchema”的项目。

构建架构 - 示例 1

我们将根据示例 1 创建架构。

步骤 1:右键单击解决方案资源管理器中的项目并选择“添加新项”选项。然后,选择项“架构”并将其命名为“FFSchema_TAB”。当架构显示时,将“Root”元素重命名为“TSV”。

步骤 2:选择项“架构”并右键单击,选择属性。将属性“架构编辑器扩展”更改为平面文件扩展

步骤 3:选择项“TSV”并右键单击,选择属性

TSV“根节点”属性
属性名称 属性值
子分隔符类型 十六进制
子分隔符 0x0D 0x0A
结构 分隔

步骤 4:选择项“TSV”并右键单击 -> 插入架构节点 -> 子记录。将记录命名为“Record”并创建子元素:“Name”、“DOB”和“Address”

步骤 5:选择项“Record”并右键单击,选择属性。按如下表所示设置属性。十六进制字符“0X09”表示一个字符。子顺序设置为“Infix”,因为制表符出现在每个记录的字段之间。我们需要支持多个记录,因此我们将最大出现次数设置为“*”或“无限制”

“记录”节点属性
属性名称 属性值
子分隔符类型 十六进制
子分隔符 0x09
子顺序 中缀
最小出现次数 1
最大出现次数 无界

步骤 6:在解决方案资源管理器中,选择架构“FFSchema_TAB.xsd”并右键单击 -> 选择“属性”。在属性页屏幕中,选择图像中显示的属性。对于“输入实例文件名” -> 选择输入文件(*.txt) 所在的路径

验证和测试已创建的架构

完成架构编写后,我们需要验证和测试架构。

步骤 1:在解决方案资源管理器中,选择架构“FFSchema_TAB.xsd”并右键单击 -> 选择“验证架构”。观察输出窗口,您会注意到一条消息,其开头是“Validate Schema succeeded for file...”。

步骤 2:在解决方案资源管理器中,选择架构“FFSchema_TAB.xsd”并右键单击 -> 选择“验证实例”。观察输出窗口,您会注意到一条消息,其开头是“Validate Instance succeeded for schema FFSchema_TAB.xsd...”。现在单击以消息“Validation generated XML output...”开头的链接

XML 输出文件将如下所示

构建架构 - 示例 2

我们将根据示例 2 创建架构。

步骤 1:右键单击解决方案资源管理器中的项目并选择“添加新项”选项。然后,选择项“架构”并将其命名为“FFSchema_CSV”。当架构显示时,将“Root”元素重命名为“CSV”。

步骤 2:选择项“架构”并右键单击,然后选择属性。将属性“架构编辑器扩展”更改为平面文件扩展

步骤 3:选择项“CSV”并右键单击,选择属性

CSV“根节点”属性
属性名称 属性值
子分隔符类型 十六进制
子分隔符 0x0D 0x0A
结构 分隔

步骤 4:选择项“CSV”并右键单击 -> 插入架构节点 -> 子记录。将记录命名为“Record”并创建子元素:“Name”、“DOB”和“Address”

步骤 5:选择项“Record”并右键单击,选择属性。按如下表所示设置属性。字符“,”表示逗号字符。子顺序设置为“Infix”,因为逗号出现在每个记录的字段之间。我们需要支持多个记录,因此我们将最大出现次数设置为“*”或“无限制”

“记录”节点属性
属性名称 属性值
子分隔符类型 字符
子分隔符 ,
子顺序 中缀
最小出现次数 1
最大出现次数 无界

步骤 6:在解决方案资源管理器中,选择架构“FFSchema_CSV.xsd”并右键单击 -> 选择“属性”。在属性页屏幕中,选择图像中显示的属性。对于“输入实例文件名” -> 选择输入文件(*.txt) 所在的路径

验证和测试已创建的架构

完成架构编写后,我们需要验证和测试架构。

步骤 1:在解决方案资源管理器中,选择架构“FFSchema_CSV.xsd”并右键单击 -> 选择“验证架构”。观察输出窗口,您会注意到一条消息,其开头是“Validate Schema succeeded for file...”。

步骤 2:在解决方案资源管理器中,选择架构“FFSchema_CSV.xsd”并右键单击 -> 选择“验证实例”。观察输出窗口,您会注意到一条消息,其开头是“Validate Instance succeeded for schema FFSchema_CSV.xsd...”。现在单击以消息“Validation generated XML output...”开头的链接

XML 输出文件将如下所示

快速要点

  1. 在开始使用平面文件架构之前,请设置架构的编辑器扩展属性。
  2. 将“子分隔符类型”属性设置为十六进制以避免字符歧义。

第二部分

本文的下一部分将讨论“位置平面文件”。在此之前,祝您架构编程愉快。

© . All rights reserved.