Как использовать мастер сопоставления плоских файлов BizTalk для вложенных повторяющихся элементов? - PullRequest
1 голос
/ 17 февраля 2011

У меня есть плоский файл с несколькими повторяющимися разделами, и я запутался, как создать схему с помощью мастера отображения плоских файлов BT.Файл выглядит так:

001,bunch of data
002,bunch of data
006,bunch of data
006A,bunch of data
006B,bunch of data
006B,bunch of data
006,bunch of data
006A,bunch of data
006B,bunch of data

Как видите, записи 006 * могут повторяться.Я собираюсь закончить с XML, который выглядит следующим образом:

<001Stuff>...</001Stuff>
<002Stuff>...</002Stuff>
<006Loop>
   <006Stuff>...</006Stuff>
   <006AStuff>...</006AStuff>
   <006BStuff>...</006BStuff>
   <006BStuff>...</006BStuff>
</006Loop>
<006Loop>
   <006Stuff>...</006Stuff>
   <006AStuff>...</006AStuff>
   <006BStuff>...</006BStuff>
</006Loop>

Очевидно, я не могу просто установить для первой группы записей 006 * значение «Повторяющаяся запись» и игнорировать второй набор.Я привык иметь дело с одиночными повторяющимися строками с помощью мастера (т. Е. Еще одна строка 006 сразу после первой), а не с такими вложенными вещами, как это - какие-либо предложения о том, как действовать?Спасибо!

Ответы [ 2 ]

3 голосов
/ 18 февраля 2011

Работа с мастером схемы плоских файлов довольно сложна, и он может вам помочь только в очень немногих случаях.Кажется, мне всегда приходится немного подправлять его вывод.

Чтобы немного упростить ситуацию, я предлагаю вам ограничить образец документа одним вхождением всей структуры <006>.Вам не нужно будет устанавливать много строк на Ignored с помощью мастера схемы плоских файлов:

001,bunch of data
002,bunch of data
006,bunch of data
006A,bunch of data
006B,bunch of data
006B,bunch of data

Затем каждая повторяющаяся структура должна быть заключена в соответствующую повторяющуюся запись в определении вашей схемы XML.

Обратите внимание, что вы всегда можете рекурсивно запустить мастер схемы плоских файлов для вложенных структур, чтобы получить более детальный контроль.Поэтому я бы предложил, во-первых, запустить мастер с всеобъемлющей повторяющейся структурой <006>, например:

enter image description here

Затем вы можете щелкнуть правой кнопкой мыши по структуре,и предоставить более подробное определение вложенных дочерних структур, выделив только подмножество содержимого образца, например:

enter image description here

Затем самая важная часть : вам нужно настроить свойство Child Order на Conditional Default для обеих повторяющихся структур , потому что в конце файла документа есть только одна пустая строка, и мастер не может помочь вам в этой ситуации.

Для справки, полученная структура должна выглядеть следующим образом:

enter image description here

со следующими настройками:

  • BunchOfStuff (Root):С разделителями, 0x0D 0x0A, суффикс.
  • _001Stuff: с разделителями, ,, префикс, идентификатор тега 001.
  • _002Stuff: с разделителями, ,, префикс,Идентификатор тега 002.
  • _006Loop: с разделителями, 0x0D 0x0A, Условное значение по умолчанию .
  • _006Stuff: с разделителями, ,, префикс, идентификатор тега 006.
  • _006AStuff: с разделителями, ,, префикс, идентификатор тега 006A.
  • _006BLoop: с разделителями, 0x0D 0x0A, Условное значение по умолчанию .
  • _006BStuff: с разделителями, ,, префикс, идентификатор тега 006B.

Надеюсь, это поможет.

0 голосов
/ 17 февраля 2011

Относитесь ко всему от первого запуска первого 006, запись до начала второго 006, запись как одна запись.Когда вы определяете запись 006, установите ее как повторяющуюся запись.Это должно создать узел для каждого 660, группу и узлы для каждого 600 под ним.

Это то, что я бы попробовал.

Вот мой вывод после 2 минут работы.За исключением имен узлов / элементов, я думаю, что это то, что вы хотите.Вам все равно придется создавать отдельные элементы для каждого из полей в ваших данных.

<_x0030_01 xmlns = "">> 001, группа данных <_x0030_02 xmlns = "">> 002, группа данных <_x0030_06 xmlns= ""> <_x0030_06_Child1> куча данных <_x0030_06_Child2> <_x0030_06_Child2_Child1> А, куча данных <_x0030_06_Child2> <_x0030_06_Child2_Child1> в, куча данных <_x0030_06_Child2> <_x0030_06_Child2_Child1> в, куча данных <_x0030_06 XMLNS = ""><_x0030_06_Child1> группа данных <_x0030_06_Child2> <_x0030_06_Child2_Child1> A, группа данных <_x0030_06_Child2> <_x0030_06_Child2_Child1> B, группа данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...