
こんにちは。CData Software Japan の杉本です。
CData Arc のFlat File コネクタは固定長レイアウトのファイルや、可変長レイアウトのファイルを、XML フォーマットとの間で相互変換するコネクタです。位置区切りや文字区切り、単一ファイルでのマルチレイアウトにも対応する、多機能なコネクタです。今回はFlat File コネクタの基本的な利用方法についてご案内します。
XML への変換
可変長レイアウト(文字区切りファイル)からXML への変換
以下のようにカンマ区切りで指定されたCSV ファイルをサンプルとしてご説明します。
product_code,product_name,category,price,stock
PRD001,ノートPC,PC,148000,25
PRD002,ワイヤレスマウス,周辺機器,2980,150
PRD003,液晶モニター27インチ,モニター,38000,40
PRD004,ワイヤレスキーボード,周辺機器,5480,80
PRD005,USBメモリ64GB,ストレージ,1980,200
PRD006,外付けSSD 1TB,ストレージ,12800,60
PRD007,Webカメラ,周辺機器,8900,45
PRD008,デスクトップPC,PC,198000,15
PRD009,HDMIケーブル2m,ケーブル,980,300
PRD010,マウスパッド,周辺機器,580,180
PRD011,ノートPCスタンド,周辺機器,3280,55
PRD012,USB-Cハブ,周辺機器,4980,90
Flat File コネクタを利用して、上記のCSV ファイルをXML に変換する場合は、ファイルの種類で「Character Delimited」を選択します。今回はCSVファイルのため、区切り文字にカンマを指定します。

今回サンプルファイルはWindows環境で作成しており、改行コードがCRLF となるので、高度な設定にある改行コードをLF からCRLF に変更します。

上記の設定後にFlat File コネクタにサンプルのCSV ファイルを連携すると、以下のようなXML に変換されることが確認出来ます。
PRD001
ノートPC
PC
148000
25
PRD002
ワイヤレスマウス
周辺機器
2980
150
PRD003
液晶モニター27インチ
モニター
38000
40
PRD004
ワイヤレスキーボード
周辺機器
5480
80
PRD005
USBメモリ64GB
ストレージ
1980
200
PRD006
外付けSSD 1TB
ストレージ
12800
60
PRD007
Webカメラ
周辺機器
8900
45
PRD008
デスクトップPC
PC
198000
15
PRD009
HDMIケーブル2m
ケーブル
980
300
PRD010
マウスパッド
周辺機器
580
180
PRD011
ノートPCスタンド
周辺機器
3280
55
PRD012
USB-Cハブ
周辺機器
4980
90
また今回のサンプルではヘッダー行が存在しますが、ヘッダー行を存在しない場合は「カラムヘッダーが存在します」のチェックを外して、フィールド名を構成する必要がございます。

ただし通常の可変長レイアウト(文字区切りファイル)であれば、CSV コネクタやTSV コネクタなども用意されておりますので、シンプルなXML 相互相互変換であれば、そちらのコネクタをご利用頂くのがお勧めです。
固定長ファイル(位置区切りファイル)からXML への変換
以下のような固定長ファイルをサンプルとしてご説明します。
PRD001Laptop 15inch Electronics 0014800000025
PRD002Wireless Mouse Peripherals 0000298000150
PRD003LCD Monitor 27inch Monitors 0003800000040
PRD004Wireless Keyboard Peripherals 0000548000080
PRD005USB Memory 64GB Storage 0000198000200
PRD006External SSD 1TB Storage 0001280000060
PRD007Web Camera Peripherals 0000890000045
PRD008Desktop PC Electronics 0019800000015
PRD009HDMI Cable 2m Cables 0000098000300
PRD010Mouse Pad Peripherals 0000058000180
PRD011Laptop Stand Peripherals 0000328000055
PRD012USB-C Hub Peripherals 0000498000090
固定長ファイルをXML に変換する場合は、Flat File コネクタを追加して、ファイルの種類で「Position Delimited」を選択します。

次に今回のサンプルファイルでは単純な固定長レイアウトとなるため、マルチラインモードのチェックを外して、ラインの種類に固定長レイアウトの項目を指定します。

最後にCSV ファイルの時と同様に改行コードをCRLF に変更して、Flat File コネクタにサンプルの固定長ファイルを連携すると、以下のようなXML として出力されます。
PRD001
Laptop 15inch
Electronics
00148000
00025
PRD002
Wireless Mouse
Peripherals
00002980
00150
PRD003
LCD Monitor 27inch
Monitors
00038000
00040
PRD004
Wireless Keyboard
Peripherals
00005480
00080
PRD005
USB Memory 64GB
Storage
00001980
00200
PRD006
External SSD 1TB
Storage
00012800
00060
PRD007
Web Camera
Peripherals
00008900
00045
PRD008
Desktop PC
Electronics
00198000
00015
PRD009
HDMI Cable 2m
Cables
00000980
00300
PRD010
Mouse Pad
Peripherals
00000580
00180
PRD011
Laptop Stand
Peripherals
00003280
00055
PRD012
USB-C Hub
Peripherals
00004980
00090
日本語を含む固定長ファイルからXML への変換
Flat File コネクタの「Position Delimited」では、文字の長さを文字数ベースでカウントします。例えば日本語などのマルチバイト文字が含まれる場合などに、バイト長ベースでの位置区切り指定を行う方法について、以下のサンプルを元に説明します。
PRD001ノートPC PC 0014800000025
PRD002ワイヤレスマウス 周辺機器 0000298000150
PRD003液晶モニター27インチ モニター 0003800000040
PRD004ワイヤレスキーボード 周辺機器 0000548000080
PRD005USBメモリ64GB ストレージ0000198000200
PRD006外付けSSD 1TB ストレージ0001280000060
PRD007Webカメラ 周辺機器 0000890000045
PRD008デスクトップPC PC 0019800000015
PRD009HDMIケーブル2m ケーブル 0000098000300
PRD010マウスパッド 周辺機器 0000058000180
PRD011ノートPCスタンド 周辺機器 0000328000055
PRD012USB-Cハブ 周辺機器 0000498000090
Flat File コネクタの設定ページ下部のその他の設定より、「取得するファイルの文字コードを指定するプロパティ(InputEncoding)」と「位置区切りをバイト数基準で実施する事を示すプロパティ(UseByteLength)」を設定します。例えば日本語の全角文字を2byte、半角文字を1byte として扱いたい場合は、以下のように「InputEncoding=Shift-JIS;UseByteLength=true」と指定します。

改行コードをCRLF に変更して、Flat File コネクタにサンプルの日本語の固定長ファイル(Shift-JIS)を連携すると、以下のようなXML として出力されます。
PRD001
ノートPC
PC
00148000
00025
PRD002
ワイヤレスマウス
周辺機器
00002980
00150
PRD003
液晶モニター27インチ
モニター
00038000
00040
PRD004
ワイヤレスキーボード
周辺機器
00005480
00080
PRD005
USBメモリ64GB
ストレージ
00001980
00200
PRD006
外付けSSD 1TB
ストレージ
00012800
00060
PRD007
Webカメラ
周辺機器
00008900
00045
PRD008
デスクトップPC
PC
00198000
00015
PRD009
HDMIケーブル2m
ケーブル
00000980
00300
PRD010
マウスパッド
周辺機器
00000580
00180
PRD011
ノートPCスタンド
周辺機器
00003280
00055
PRD012
USB-Cハブ
周辺機器
00004980
00090
マルチレイアウトからXML への変換
ただし実際にやり取りされるデータはシンプルな構造のファイルだけでなく、例えば一つのファイルで複数の構造が存在する場合があるかと思います。Flat File コネクタではマルチレイアウトの構造にも対応していますので、以下のマルチレイアウトの固定長ファイルを元に設定方法について説明します。またFlat File コネクタではマルチレイアウトの固定長ファイルだけでなく、マルチレイアウトの可変長(文字区切り)ファイルにも対応しております。
H20241128001SALES
D00001Laptop 0150000001
D00002Mouse 0002500002
D00003Keyboard 0004500001
D00004Monitor 0320000001
T00004004770000005
マルチレイアウトのファイルに対応する場合は「複数ラインモードを有効化」にチェックを入れる必要があります。そしてレイアウトの種類をコントロールフィールド値によって、区別することが可能です。

例えばサンプルファイルでは先頭の値がH の場合はヘッダー、D の場合は明細、T の場合はトレーラーレコードを意味しています。そのため開始インデックスは先頭を意味する0、コントロールフィールド値は一文字なのでコントロールフィールド長は1、そして各ラインのコントロールフィールド値にH、D、Tとして構成します。

各ラインにレイアウトの設定を行います。

改行コードをCRLF に変更して、Flat File コネクタにサンプルのマルチレイアウトの固定長ファイルを連携すると、以下のようなXML として出力されます。
20241128
001
SALES
00001
Laptop
0150000
001
00002
Mouse
0002500
002
00003
Keyboard
0004500
001
00004
Monitor
0320000
001
00004
00477000
0005
XML からの変換
XML から可変長レイアウト(文字区切りファイル)への変換
Flat File コネクタではXML から可変長/固定長レイアウトのファイルに変換することが可能です。以下のサンプルを元にまずは可変長レイアウトのCSV ファイルに変換する方法を説明します。
PRD001
Laptop 15inch
Electronics
00148000
00025
PRD002
Wireless Mouse
Peripherals
00002980
00150
PRD003
LCD Monitor 27inch
Monitors
00038000
00040
ファイルの種類で「Character Delimited」を選択し、「カラムヘッダーが存在します」にチェックを入れます。「カラムヘッダーが存在します」にチェックを入れることで、XML の要素名がCSV のヘッダーとして出力されます。

Flat File コネクタにサンプルのXML ファイルを連携すると、以下のようなCSV として出力されます。
product_code,product_name,category,price,stock
PRD001,Laptop 15inch,Electronics,00148000,00025
PRD002,Wireless Mouse,Peripherals,00002980,00150
PRD003,LCD Monitor 27inch,Monitors,00038000,00040
ただしXML への変換シナリオと同様に、可変長レイアウトのシンプルなXML 変換であれば、CSV コネクタやTSV コネクタ等をご利用頂くのがお勧めです。
XML から固定長ファイル(位置区切りファイル)への変換
先ほどと同じサンプルファイルを元に、今度は固定長ファイルを出力する方法について説明します。ファイルの種類で「Position Delimited」を選択し、ラインの種類で固定長ファイルとして出力する項目のレイアウトを定義します。

Flat File コネクタにサンプルのXML ファイルを連携すると、以下のような固定長ファイルとして出力されます。
PRD001Laptop 15inch Electronics 0014800000025
PRD002Wireless Mouse Peripherals 0000298000150
PRD003LCD Monitor 27inch Monitors 0003800000040
XML から日本語を含む固定長ファイルへの変換
XML から日本語を含むバイト長ベースの固定長ファイルを変換する方法について、以下のサンプルを元に説明します。
PRD001
ノートPC
PC
00148000
00025
PRD002
ワイヤレスマウス
周辺機器
00002980
00150
PRD003
液晶モニター27インチ
モニター
00038000
00040
「日本語を含む固定長ファイルからXML への変換」の時と同様に、その他の設定に「InputEncoding=Shift-JIS;UseByteLength=true」と指定します。

そしてファイルの種類で「Position Delimited」を選択し、ラインの種類で固定長ファイルとして出力する項目のレイアウトを定義します。

またCData Arc はデフォルトでUTF-8 形式のXML ファイルを扱いますので、今回のような場合は一度Encoding コネクタでUTF-8 から Shift-JIS 形式のXML ファイルに変換する必要があります。

Flat File コネクタにサンプルのXML ファイル(Shift-JIS)を連携すると、以下のような固定長ファイルとして出力されます。
PRD001ノートPC PC 0014800000025
PRD002ワイヤレスマウス 周辺機器 0000298000150
PRD003液晶モニター27インチ モニター 0003800000040
XML からマルチレイアウトへの変換
XML からの変換の場合でも、マルチレイアウトのファイルとして出力することが可能です。XML からマルチレイアウトのファイルに変換する場合は、XML のlineType という属性を元にレイアウトを区別します。今回は以下のようなXML ファイルを、マルチレイアウトの固定長ファイルに変換する方法を説明します。
20241128
001
SALES
00001
Laptop
0150000
001
00002
Mouse
0002500
002
00003
Keyboard
0004500
001
00004
Monitor
0320000
001
00004
00477000
0005
ファイルの種類で「Position Delimited」を選択し、「複数ラインモードを有効化」にチェックを入れます。

そして各ラインにレイアウトの設定を行います。

Flat File コネクタにサンプルのXML ファイルを連携すると、以下のようなマルチレイアウトの固定長ファイルとして出力することが可能です。
H20241128001SALES
D00001Laptop 0150000001
D00002Mouse 0002500002
D00003Keyboard 0004500001
D00004Monitor 0320000001
T00004004770000005
おわりに
この記事では、CData Arc の「Flat File コネクタ」の利用方法についてご紹介しました。CData Arc で位置区切りの固定長ファイルを扱う際に、ご活用いただけるコネクタとなりますので、ご参考になれば幸いです。製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
CData - サポートフォーム
この記事では CData Arc™ 2025 - 25.3.9442.0 を利用しています