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

ただし通常の可変長レイアウト(文字区切りファイル)であれば、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 として出力されます。
<Items>
<row>
<product_code>PRD001</product_code>
<product_name>Laptop 15inch</product_name>
<category>Electronics</category>
<price>00148000</price>
<stock>00025</stock>
</row>
<row>
<product_code>PRD002</product_code>
<product_name>Wireless Mouse</product_name>
<category>Peripherals</category>
<price>00002980</price>
<stock>00150</stock>
</row>
<row>
<product_code>PRD003</product_code>
<product_name>LCD Monitor 27inch</product_name>
<category>Monitors</category>
<price>00038000</price>
<stock>00040</stock>
</row>
<row>
<product_code>PRD004</product_code>
<product_name>Wireless Keyboard</product_name>
<category>Peripherals</category>
<price>00005480</price>
<stock>00080</stock>
</row>
<row>
<product_code>PRD005</product_code>
<product_name>USB Memory 64GB</product_name>
<category>Storage</category>
<price>00001980</price>
<stock>00200</stock>
</row>
<row>
<product_code>PRD006</product_code>
<product_name>External SSD 1TB</product_name>
<category>Storage</category>
<price>00012800</price>
<stock>00060</stock>
</row>
<row>
<product_code>PRD007</product_code>
<product_name>Web Camera</product_name>
<category>Peripherals</category>
<price>00008900</price>
<stock>00045</stock>
</row>
<row>
<product_code>PRD008</product_code>
<product_name>Desktop PC</product_name>
<category>Electronics</category>
<price>00198000</price>
<stock>00015</stock>
</row>
<row>
<product_code>PRD009</product_code>
<product_name>HDMI Cable 2m</product_name>
<category>Cables</category>
<price>00000980</price>
<stock>00300</stock>
</row>
<row>
<product_code>PRD010</product_code>
<product_name>Mouse Pad</product_name>
<category>Peripherals</category>
<price>00000580</price>
<stock>00180</stock>
</row>
<row>
<product_code>PRD011</product_code>
<product_name>Laptop Stand</product_name>
<category>Peripherals</category>
<price>00003280</price>
<stock>00055</stock>
</row>
<row>
<product_code>PRD012</product_code>
<product_name>USB-C Hub</product_name>
<category>Peripherals</category>
<price>00004980</price>
<stock>00090</stock>
</row>
</Items>
日本語を含む固定長ファイルから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 として出力されます。
<Items>
<row>
<product_code>PRD001</product_code>
<product_name>ノートPC</product_name>
<category>PC</category>
<price>00148000</price>
<stock>00025</stock>
</row>
<row>
<product_code>PRD002</product_code>
<product_name>ワイヤレスマウス</product_name>
<category>周辺機器</category>
<price>00002980</price>
<stock>00150</stock>
</row>
<row>
<product_code>PRD003</product_code>
<product_name>液晶モニター27インチ</product_name>
<category>モニター</category>
<price>00038000</price>
<stock>00040</stock>
</row>
<row>
<product_code>PRD004</product_code>
<product_name>ワイヤレスキーボード</product_name>
<category>周辺機器</category>
<price>00005480</price>
<stock>00080</stock>
</row>
<row>
<product_code>PRD005</product_code>
<product_name>USBメモリ64GB</product_name>
<category>ストレージ</category>
<price>00001980</price>
<stock>00200</stock>
</row>
<row>
<product_code>PRD006</product_code>
<product_name>外付けSSD 1TB</product_name>
<category>ストレージ</category>
<price>00012800</price>
<stock>00060</stock>
</row>
<row>
<product_code>PRD007</product_code>
<product_name>Webカメラ</product_name>
<category>周辺機器</category>
<price>00008900</price>
<stock>00045</stock>
</row>
<row>
<product_code>PRD008</product_code>
<product_name>デスクトップPC</product_name>
<category>PC</category>
<price>00198000</price>
<stock>00015</stock>
</row>
<row>
<product_code>PRD009</product_code>
<product_name>HDMIケーブル2m</product_name>
<category>ケーブル</category>
<price>00000980</price>
<stock>00300</stock>
</row>
<row>
<product_code>PRD010</product_code>
<product_name>マウスパッド</product_name>
<category>周辺機器</category>
<price>00000580</price>
<stock>00180</stock>
</row>
<row>
<product_code>PRD011</product_code>
<product_name>ノートPCスタンド</product_name>
<category>周辺機器</category>
<price>00003280</price>
<stock>00055</stock>
</row>
<row>
<product_code>PRD012</product_code>
<product_name>USB-Cハブ</product_name>
<category>周辺機器</category>
<price>00004980</price>
<stock>00090</stock>
</row>
</Items>
マルチレイアウトから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 として出力されます。
<Items>
<H>
<date>20241128</date>
<file_no>001</file_no>
<data_type>SALES</data_type>
</H>
<D>
<item_no>00001</item_no>
<product_name>Laptop</product_name>
<amount>0150000</amount>
<quantity>001</quantity>
</D>
<D>
<item_no>00002</item_no>
<product_name>Mouse</product_name>
<amount>0002500</amount>
<quantity>002</quantity>
</D>
<D>
<item_no>00003</item_no>
<product_name>Keyboard</product_name>
<amount>0004500</amount>
<quantity>001</quantity>
</D>
<D>
<item_no>00004</item_no>
<product_name>Monitor</product_name>
<amount>0320000</amount>
<quantity>001</quantity>
</D>
<T>
<record_count>00004</record_count>
<total_amount>00477000</total_amount>
<total_quantity>0005</total_quantity>
</T>
</Items>
XML からの変換
XML から可変長レイアウト(文字区切りファイル)への変換
Flat File コネクタではXML から可変長/固定長レイアウトのファイルに変換することが可能です。以下のサンプルを元にまずは可変長レイアウトのCSV ファイルに変換する方法を説明します。
<Items>
<row>
<product_code>PRD001</product_code>
<product_name>Laptop 15inch</product_name>
<category>Electronics</category>
<price>00148000</price>
<stock>00025</stock>
</row>
<row>
<product_code>PRD002</product_code>
<product_name>Wireless Mouse</product_name>
<category>Peripherals</category>
<price>00002980</price>
<stock>00150</stock>
</row>
<row>
<product_code>PRD003</product_code>
<product_name>LCD Monitor 27inch</product_name>
<category>Monitors</category>
<price>00038000</price>
<stock>00040</stock>
</row>
</Items>
ファイルの種類で「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 から日本語を含むバイト長ベースの固定長ファイルを変換する方法について、以下のサンプルを元に説明します。
<Items>
<row>
<product_code>PRD001</product_code>
<product_name>ノートPC</product_name>
<category>PC</category>
<price>00148000</price>
<stock>00025</stock>
</row>
<row>
<product_code>PRD002</product_code>
<product_name>ワイヤレスマウス</product_name>
<category>周辺機器</category>
<price>00002980</price>
<stock>00150</stock>
</row>
<row>
<product_code>PRD003</product_code>
<product_name>液晶モニター27インチ</product_name>
<category>モニター</category>
<price>00038000</price>
<stock>00040</stock>
</row>
</Items>
「日本語を含む固定長ファイルから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 ファイルを、マルチレイアウトの固定長ファイルに変換する方法を説明します。
<Items>
<H lineType="H">
<date>20241128</date>
<file_no>001</file_no>
<data_type>SALES</data_type>
</H>
<D lineType="D">
<item_no>00001</item_no>
<product_name>Laptop</product_name>
<amount>0150000</amount>
<quantity>001</quantity>
</D>
<D lineType="D">
<item_no>00002</item_no>
<product_name>Mouse</product_name>
<amount>0002500</amount>
<quantity>002</quantity>
</D>
<D lineType="D">
<item_no>00003</item_no>
<product_name>Keyboard</product_name>
<amount>0004500</amount>
<quantity>001</quantity>
</D>
<D lineType="D">
<item_no>00004</item_no>
<product_name>Monitor</product_name>
<amount>0320000</amount>
<quantity>001</quantity>
</D>
<T lineType="T">
<record_count>00004</record_count>
<total_amount>00477000</total_amount>
<total_quantity>0005</total_quantity>
</T>
</Items>
ファイルの種類で「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 を利用しています