Схема Плоского файла BizTalk - как принять LF или CRLF как разделитель строки

Наш клиент отправляет нам плоский файл, как введено, который мы затем берем и преобразовываем в XML-файл прежде, чем отправить к целевой системе.

Плоский файл состоит из нескольких строк, каждая строка разграничена LF или CRLF.

Как я создаю Схему Плоского файла так, чтобы BizTalk мог интерпретировать каждую строку данных независимо от того, была ли строка разграничена LF (0x0A) или CRLF (0x0D 0x0A)?

6
задан Dijkgraaf 6 June 2015 в 03:05
поделиться

2 ответа

Проблема решена. Вот решение на тот случай, если кому-то еще интересно:

Поскольку LF и CRLF имеют общий символ LF, я установил разделитель строк как LF (0x0A). Это правильно работает для извлечения полных записей (с побочным эффектом наличия одного дополнительного символа CR в конце, когда CRLF является разделителем).

Можно избавиться от лишнего символа CR, используя фиктивное поле для поглощения символа CR или используя карту.

Обратите внимание, что, поскольку разделители LF и CRLF имеют разную длину (1 и 2 символа соответственно), мне пришлось внести еще пару изменений в схему, чтобы гарантировать правильную обработку обоих.

В моем сценарии каждая проанализированная строчная запись содержит 8 позиционных полей, поэтому наличие дополнительного символа CR в конце приводило к ошибке из-за того, что Biztalk ожидал определенной длины для последнего поля, которое не учитывает дополнительный CR. персонаж. Решение состоит в том, чтобы увеличить длину 8-го поля (которое в моем случае является полем-заполнителем) на 1. Однако, чтобы по-прежнему иметь возможность обрабатывать разделители строк LF, убедитесь, что вы установили 'Allow Early Прерывание ' флага в ИСТИНА. Таким образом, никаких ошибок не возникает, если последнее поле на 1 символ меньше назначенной длины (если символ CR не был включен).

7
ответ дан 9 December 2019 в 22:30
поделиться

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

Я не знаю способа указать более одного дочернего разделителя в схеме плоского файла отдельно, но одним из возможных решений может быть создание собственного конвейера компонент для этапа декодирования вашего конвейера приема для замены CRLF на LF, затем используйте LF в качестве разделителя в схеме плоского файла.

4
ответ дан 9 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: