Создание схемы с нуля
Я думаю, что использование мастера схемы плоских файлов даже для таких умеренно сложных структур, как эта, не стоит проблем. Мое предложение - подумать об общей структуре и предоставить схему с помощью редактора схемы.
Итак, ваш пример вызывает схему, которая имеет следующую структуру:
Одна запись Header
с типом 00
, за которым следует последовательность записей с типом 07
, 08
, 09
и 10
соответственно. Каждая типизированная запись сама по себе является структурой, которая содержит любое количество повторяющихся записей. Наконец, структура заканчивается одной GroupTrailer
записью, набранной 16
, за которой следует общая Trailer
запись, набранная 17
.
Это прекрасно соответствует следующей схеме в BizTalk:
Теперь вам нужно настроить различные свойства узлов, чтобы указать дизассемблеру плоских файлов, как анализировать входящие сообщения.
Корневая запись
Запись Root
предназначена только для группирования различных дочерних записей вместе и требуется для правильно структурированного XML-документа. Однако он не участвует в разборе входящей структуры.
Следовательно, вы должны установить Child Delimiter Type
на None
.
Записи заголовка, группового трейлера и трейлера
Записи 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
.
person
Maxime Labelle
schedule
08.03.2011