Наш клиент отправляет нам плоский файл, как введено, который мы затем берем и преобразовываем в XML-файл прежде, чем отправить к целевой системе.
Плоский файл состоит из нескольких строк, каждая строка разграничена LF или CRLF.
Как я создаю Схему Плоского файла так, чтобы BizTalk мог интерпретировать каждую строку данных независимо от того, была ли строка разграничена LF (0x0A) или CRLF (0x0D 0x0A)?
Проблема решена. Вот решение на тот случай, если кому-то еще интересно:
Поскольку LF и CRLF имеют общий символ LF, я установил разделитель строк как LF (0x0A). Это правильно работает для извлечения полных записей (с побочным эффектом наличия одного дополнительного символа CR в конце, когда CRLF является разделителем).
Можно избавиться от лишнего символа CR, используя фиктивное поле для поглощения символа CR или используя карту.
Обратите внимание, что, поскольку разделители LF и CRLF имеют разную длину (1 и 2 символа соответственно), мне пришлось внести еще пару изменений в схему, чтобы гарантировать правильную обработку обоих.
В моем сценарии каждая проанализированная строчная запись содержит 8 позиционных полей, поэтому наличие дополнительного символа CR в конце приводило к ошибке из-за того, что Biztalk ожидал определенной длины для последнего поля, которое не учитывает дополнительный CR. персонаж. Решение состоит в том, чтобы увеличить длину 8-го поля (которое в моем случае является полем-заполнителем) на 1. Однако, чтобы по-прежнему иметь возможность обрабатывать разделители строк LF, убедитесь, что вы установили 'Allow Early Прерывание ' флага в ИСТИНА. Таким образом, никаких ошибок не возникает, если последнее поле на 1 символ меньше назначенной длины (если символ CR не был включен).
Простите, если я неправильно понял вопрос ... звучит так, как будто каждая строка является записью, но некоторые строки заканчиваются на LF, а другие на CRLF, и вам нужно иметь оба в качестве разделителей на одном уровне?
Я не знаю способа указать более одного дочернего разделителя в схеме плоского файла отдельно, но одним из возможных решений может быть создание собственного конвейера компонент для этапа декодирования вашего конвейера приема для замены CRLF на LF, затем используйте LF в качестве разделителя в схеме плоского файла.