从头开始创建架构
我认为即使对于像这个这样的中等复杂结构,使用平面文件模式向导也不值得麻烦。我的建议是考虑整体结构,并使用模式编辑器提供大纲。
因此,您的示例调用具有以下结构的模式:
单个Header
记录类型00
为 ,后跟一系列记录类型07
分别为08
、09
和10
。每个类型化的记录本身就是一个结构,它包含任意数量的重复记录。最后,该结构以单个GroupTrailer
记录 typed结束16
,然后是一条整体Trailer
记录 typed 17
。
这很好地映射到 BizTalk 中的以下架构:

现在,您需要调整节点的各种属性,以指示平面文件反汇编程序如何解析传入的消息。
根记录
该Root
记录只是用于将各种子记录组合在一起,并且是结构正确的 XML 文档所必需的。但是,它不参与传入结构的解析。
因此,您应该将 设置Child Delimiter Type
为None
。
Header、GroupTrailer 和 Trailer 记录
,和记录每次出现一次,因此将它们的Header
和属性保留为默认值。GroupTrailer
Trailer
Min Occurs
Max Occurs
1
此外,这些记录中的每一个都分别由适当Tag Identifier
的00
和标识。16
17
最后,这些记录都以尾随的 CR/LF 对或字符结尾。因此,将它们的Child Delimiter Type
属性设置为Hexadecimal
,并将它们的Child Order
属性设置为Postfix
。
Type07、Type08、Type09 和 Type10 结构
这是棘手的部分。
查看这些结构的一种方法是它们包含重复记录,每个记录都以尾随 CR/LF 分隔。然而,结构本身只出现一次。
另一个重要的一点是,您只需要一个 CR/LF 对作为结构及其子记录的分隔符。因此,Child Delimiter Type
属性的设置应该反映这一点。
对于Type07
、Type08
和记录Type09
,Type10
保留默认设置。即,将Child Delimiter Type
属性设置为None
并将Child Order
属性设置为Conditional Default
。特别是,这些记录没有Tag Identifier
设置。
Type07_Record、Type08_Record、Type09_Record 和 Type10_Record 结构
但是,Type07_Record
、Type08_Record
和Type09_Record
被Type10_Record
设置为多次出现。将它们的Min Occurs
属性设置为0
并将Max Occurs
属性设置为unbounded
。
此外,每个重复记录都以尾随 CR/LF 对结束。因此,将它们的Child Delimiter Type
属性设置为Hexadecimal
,将它们的Child Order
属性设置为 ,将Postfix
它们的Child Delimiter
属性设置为0x0D 0x0A
。
参考
作为参考,结果设置为:
Root
:分隔,无,有条件的默认值。
Header
: 分隔符、十六进制、0x0D 0x0A
、后缀、标签标识符00
。
<Sequence>
: (可选) , MinOccurs: 1, MaxOccurs: 1
Type07
:分隔,无,有条件的默认值。
Type07_Record
: 分隔符、十六进制、0x0D 0x0A
、后缀、标签标识符07
。
Type08
:分隔,无,有条件的默认值。
Type08_Record
: 分隔符、十六进制、0x0D 0x0A
、后缀、标签标识符08
。
Type09
:分隔,无,有条件的默认值。
Type09_Record
: 分隔符、十六进制、0x0D 0x0A
、后缀、标签标识符09
。
Type10
:分隔,无,有条件的默认值。
Type10_Record
: 分隔符、十六进制、0x0D 0x0A
、后缀、标签标识符10
。
GroupTrailer
: 分隔符、十六进制、0x0D 0x0A
、后缀、标签标识符16
。
Trailer
: 分隔符、十六进制、0x0D 0x0A
、后缀、标签标识符17
。