2010-04-22 3 views
6

클라이언트가 플랫 파일을 입력으로 보낸 다음 대상 시스템에 보내기 전에 XML 파일로 변환합니다.BizTalk 플랫 파일 스키마 - 줄 구분 기호로 LF 또는 CRLF를 받아들이는 방법

플랫 파일은 여러 줄로 구성되며 각 줄은 LF 또는 CRLF로 구분됩니다.

줄이 LF (0x0A) 또는 CRLF (0x0D 0x0A)로 구분되었는지 여부에 관계없이 BizTalk가 각 데이터 줄을 해석 할 수 있도록 플랫 파일 스키마를 만드는 방법은 무엇입니까?

답변

6

문제가 해결되었습니다. 다른 사람들이 궁금해하는 경우의 해결책은 다음과 같습니다.

LF와 CRLF는 모두 LF 문자를 공유하므로 LF (0x0A)로 줄 구분 기호를 설정합니다. CRLF가 구분 기호 일 때 끝에 하나의 추가 CR 문자가있는 부작용이있는 전체 레코드 추출 올바르게 작동합니다.

CR 문자를 흡수하기 위해 더미 필드를 사용하거나 맵을 사용하여 추가 CR 문자를 제거 할 수 있습니다.

LF와 CRLF 구분 기호가 다른 길이 (각각 1 자와 2 자)를 가지므로 두 가지가 올바르게 처리되도록 스키마를 몇 가지 더 변경해야합니다.

필자의 시나리오에서 구문 분석 된 각 줄 레코드에는 8 개의 위치 필드가 포함되어 있으므로 끝에 추가 CR 문자가 있으면 추가 필드를 고려하지 않은 마지막 필드의 특정 길이를 예상하는 BizTalk 때문에 오류가 발생합니다 CR 문자. 해결 방법은 필자 필드의 8 번째 필드 길이를 1 씩 늘리는 것입니다. 그러나 LF 줄 구분 기호를 처리 할 수 ​​있으려면 의 '조기 종료 허용'을 설정해야합니다. 플래그를 TRUE로 설정하십시오. 마지막 필드가 할당 된 길이보다 1 문자 부족한 경우 (CR 문자가 포함되지 않은 경우) 오류가 발생하지 않습니다.

+0

이렇게하면 형식이 잘못된 레코드도 받아 들일 수 있습니까? –

4

질문을 오해하면 용서해주세요 ... 마치 각 줄이 레코드 인 것처럼 들리지만 일부 줄은 LF와 CRLF의 다른 줄로 끝나고 둘 다 같은 수준의 구분 기호로 사용해야합니까?

플랫 파일 스키마에 둘 이상의 자식 구분 기호를 단독으로 지정하는 방법을 모르지만 수신 파이프 라인의 디코딩 단계에 대한 사용자 지정 파이프 라인 구성 요소를 작성하여 LF가있는 CRLF를 선택한 다음 LF를 플랫 파일 스키마의 구분 기호로 사용하십시오.

+0

감사합니다. BiztalkMama. 귀하의 대답은 확실히 선택 사항이지만 맞춤 디코드 구성 요소가 아닌 스키마 편집기를 사용하여이 작업을 수행 할 수있는 방법이 필요했습니다. 다행히도, 나는 그것이 가능하다는 것을 발견했습니다. 그래도 도움을 주셔서 감사합니다. – FullOfQuestions

관련 문제