MapForce는 노드 이름에 대한 동적인 접근 기능을 제공합니다

특히 구조화되지 않은 데이터를 다룰 때, 데이터 스트림의 내용뿐만 아니라 구조적인 요소들을 매핑하고 변환해야 하는 경우가 있습니다. MapForce는 XML 요소의 노드 이름, 속성, 또는 CSV 파일과 같은 텍스트 파일의 열과 같은 대상 구성 요소에 동적으로 접근하여 매핑 작업을 수행할 수 있습니다.

노드 이름에 대한 동적 접근 방식을 통해, 미리 이름을 알 필요가 없거나 데이터 매핑에서 특정하게 지정하지 않아도 되는 대상 요소 및 속성을 즉석에서 생성할 수 있습니다. 이 기능은 데이터 모델이 변경될 경우에도 수동 개입을 줄이고, 훨씬 더 일반적이고 유연하며 재사용 가능한 매핑을 만들 수 있도록 해줍니다.

다음은 CSV 파일의 일반적인 형식의 예시입니다. 이 형식에서는 데이터 필드가 열 이름으로 식별되는 것이 아니라, 같은 행 내의 인접한 셀에 있는 레이블로 식별됩니다

이 예시의 데이터는 일관된 구조를 가지고 있지 않습니다. 왜냐하면 하나의 데이터에는 성 뒤에 추가적인 정보가 포함되어 있고, 다른 데이터에는 중간 이름의 이니셜이 포함되어 있기 때문입니다.

이러한 종류의 파일의 경우, 일반적인 데이터 매핑 요구 사항은 다음과 같습니다. 즉, A열의 각 셀을 XML 요소의 이름으로, B열의 각 셀을 해당 요소의 값으로 매핑하는 것입니다. 이제는 노드 이름의 동적 매핑을 통해 이를 쉽게 구현할 수 있습니다. 어떻게 구현되는지 살펴보겠습니다.

XML 요소의 노드 이름에 대한 동적 접근 방식

먼저, 매핑 대상에 대한 매우 간단한 XML 스키마를 만들겠습니다. 이 스키마는 <xs:any> 요소를 사용하여 복잡한 요소를 정의하며, 이 요소는 어떤 자식 요소도 가질 수 있습니다. 다음은 XMLSpy 스키마 뷰에서 보이는 모습입니다

우리는 먼저 CSV 파일을 불러온 다음, 입력 파일의 A열에서 "FirstName"이 나타날 때마다 새로운 요소를 생성하는 그룹 함수를 사용하여 매핑 작업을 시작합니다.

다음으로, 대상 XML 스키마를 불러온 후, 요소를 마우스 오른쪽 버튼으로 클릭합니다

"자식 요소의 동적 이름 표시" 옵션을 선택하면 대화 상자가 열리고, 여기서 자식 요소의 데이터 유형으로 텍스트를 선택합니다. 이렇게 하면 의 자식 요소에 대한 노드 이름과 내용이 다음과 같이 표시됩니다

이제 CSV 파일의 첫 번째 열(A열)에 있는 데이터(Field1)를 자식 요소의 노드 이름에 매핑하고, 두 번째 열(B열)에 있는 데이터를 해당 요소의 내용에 매핑하는 것은 간단한 과정입니다. 최종 데이터 매핑 결과는 다음과 같습니다

맨 위에 있는 "group-starting-with" 함수는 입력 파일에서 "FirstName"이 나타날 때마다 새로운 요소를 생성합니다. 그런 다음, 각 행에 대해 A열의 항목은 자식 요소의 이름을 생성하고, B열의 항목은 각 자식 요소의 값이 됩니다.

위의 매핑 결과를 보면 다음과 같은 형태를 갖습니다

데이터 매핑에서 노드 이름에 대한 동적 접근 방식을 사용하는 경우, 입력 데이터의 모든 요소를 식별하고 매핑하기 위해 광범위한 조사를 수행할 필요가 없습니다.

일반적인 생산 환경을 가정해 보겠습니다. 이 환경에서는 하나 이상의 외부 소스에서 여러 입력 파일을 받아 MapForce Server와 FlowForce Server를 사용하여 매핑 작업을 자동화합니다. 만약 입력 파일에 예상치 못한 하위 요소(예: OfficeLocation 또는 MailStop)가 갑자기 포함되는 경우, 데이터는 손실되지 않습니다.

XML 속성 이름에 대한 동적 접근 방식

또한, XML 속성 이름을 동적으로 매핑할 수 있으며, 이를 통해 대상 요소와 속성을 미리 모두 정의하지 않고도 필요에 따라 즉시 생성할 수 있습니다.