Создание схемы с нуля
Я думаю, что использование мастера создания плоских файлов даже для умеренно сложных структур, таких как эта, не стоит таких проблем.Мое предложение состоит в том, чтобы подумать об общей структуре и представить схему с помощью редактора схем.
Итак, в вашем примере требуется схема, имеющая следующую структуру:
Aодиночная Header
запись, набранная 00
, за которой следует последовательность записей, набранных 07
, 08
, 09
и 10
соответственно.Каждая типизированная запись сама по себе является структурой, которая содержит любое количество повторяющихся записей.Наконец, структура заканчивается единственной GroupTrailer
записью, набранной 16
, за которой следует общая Trailer
запись, набранная 17
.
. Это хорошо соответствует следующей схеме в BizTalk:
Теперь вам нужно настроить различные свойства узлов, чтобы указать дизассемблеру простых файлов, как анализировать входящие сообщения.
Корневая запись
Запись Root
предназначена только для группировки различных дочерних записей и необходима для правильно структурированного XML-документа.Тем не менее, он не участвует в разборе входящей структуры.
Следовательно, вы должны установить Child Delimiter Type
в None
.
Заголовок, GroupTrailer и Trailer Records
Каждая запись Header
, GroupTrailer
и Trailer
происходит по одному разу, поэтому для их свойств Min Occurs
и Max Occurs
присваивается значение по умолчанию 1
.
Кроме того, каждая из этих записей идентифицируется соответствующими Tag Identifier
из 00
, 16
и 17
соответственно.
Наконец, эти записи заканчиваются концевой парой CR / LFили персонажи.Поэтому установите для их свойств Child Delimiter Type
значение Hexadecimal
, а для свойств Child Order
- Postfix
.
Тип07, Тип08, Тип09 и Тип10 Структуры
Это сложная часть.
Один из способов взглянуть на эти структуры состоит в том, что они содержат повторяющихся записей, каждая из которых ограничена конечным 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
.