Добавление новой строки в схему плоского файла в BizTalk 2006 R2

StackOverflow https://stackoverflow.com/questions/223190

Вопрос

У меня есть схема плоского файла с заголовком и подробными записями. Это выглядит примерно так:

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

Мне нужно добавить две пустые строки в конце сообщения. Прямо сейчас, если у меня есть несколько записей, я получаю следующий вывод:

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

То, что я хочу увидеть, происходит примерно так:

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***


HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

Я мог бы создать собственный компонент конвейера для этого, но мне интересно, есть ли более простой способ получить то, что мне нужно?

Это было полезно?

Решение

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

На основе вашего файла примера я создал схему со следующей структурой записи:

<Schema>    
  <Root>    
    <HDRGroup>    
      <HDR>    
      <LIN>    

Если вы щелкнете по корневому узлу своей схемы, вы увидите список свойств этого корневого узла. Один раздел свойств имеет заголовок «Плоский файл». В этом разделе плоских файлов вы можете установить первые три свойства: «Дочерний разделитель», «Тип дочернего разделителя» и «Дочерний порядок».

Здесь вы конфигурируете схему для создания пустых строк (в данном случае CR LF, но вы можете устанавливать разные вещи по мере необходимости). Для вашего примера я установил следующее:

Child Delimiter: 0x0D 0x0A 0x0D 0x0A    
Child Delimiter Type: Hexadecimal    
Child Order: Infix

0x0D 0x0A - это перевод строки каретки, поэтому вышеприведенное просто создает две пустые строки, вставленные между каждым дочерним элементом корневого узла.

< HDRGroup > затем функционирует, чтобы убедиться, что каждый заголовок и его строки хранятся вместе. Для его настроек разделителя я установил:

Child Delimiter: 0x0D 0x0A    
Child Delimiter Type: Hexadecimal    
Child Order: Postfix

< HDR > и < LIN > Затем записи содержат фактическое определение схемы для строк сообщения, разделенных звездочкой.

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

Принципы использования разделителей останутся в силе, вы, скорее всего, обнаружите, что вам нужно поработать с настройками.

Другие советы

Для всех, кого это волнует, я наконец-то уступил и написал собственный конвейерный компонент для этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top