アプリケーションでXMLファイルを扱う処理の必要性
その一方で、業務システムの中で実装が必要な処理の中には、外部のシステムとの間でデータをインターフェースする処理が
含まれるケースが生じることもあります。RDBの表形式のデータを外部にエクスポートしたり、外部からインポートする場合は、
そのデータ形式としては、RDBの表形式データと類似の形式であるExcelなどの表計算ソフトのスプレッドシートを選択したり、
特定のソフトウェアに依存しない形式を選択したい場合は、カンマで各列のデータを区切ったCSV形式や、
各列のデータの長さが全て固定長である場合は、開始桁・終了桁で列を識別できる固定長テキストが選択されます。
しかし、近年は特定のソフトウェアに依存せず、汎用的にデータを表現できる形式として、XMLファイルも広く普及するようになりました。
XMLファイルではタグ「
~dataxxx~ 」で囲むことでデータを表現できますが、
そのタグを入れ子にすることで、複数の階層のデータを、単一のXMLファイルでまとめて表現することが出来ます。
また、一件分の上位階層のデータの中に、複数件分の下位階層のデータを、繰り返して含めることが出来ます。
このため、例えば伝票と、その伝票に含まれる明細のような関係性のデータを表現する場合、
一つの伝票に任意の件数の明細を含めることが出来るようにしたいのであれば、
RDBの表形式のデータでは、伝票単位のデータを保持するテーブルと、伝票の明細単位のデータを保持するテーブルという様に、
2つのテーブルをそれぞれ設けて、双方のデータは共通のキー項目(例えば伝票番号)の値により突き合わせる、
という様に実装する必要があります。
しかし、XMLファイルでは、伝票を指すタグの中に伝票単位の各データ項目を含めるのと共に、
その下位の階層のデータとして、伝票明細を指すタグのデータを任意の件数含めて、その内部に伝票明細単位の各データ項目を含めることで、
伝票と、それに含まれる任意の件数の伝票明細、それぞれのデータを単一のXMLファイルでまとめて表現することが出来ます。
XMLファイルで表現できる形式のデータの例
このようにXMLファイルで表現可能なデータの構造は、RDBの表形式のデータの構造とは異なり、
表では複数に分割しなければならないデータを、単一のXMLファイルに含めることが可能です。
そのために、外部からのインターフェースによりシステムに取り込む必要があるデータが、
XMLファイルにより提供されるとなると、IBM i(AS/400)のRPGで実装された業務システムでは対応不可能で、
XMLのデータを表形式に変換して落とし込む処理を、システムの外部で行わなければならないと考えてしまうことが多いです。
しかし、OS IBM i(AS/400) に内包されているDBMS (DB2 for IBM i)の最新バージョンは、XMLデータを扱う機能も実装されているため、
XMLファイルで提供されるデータから、各階層の各データ項目の値を取得する処理は、
OS IBM i(AS/400)の中の機能だけでも実装可能です。ここでは、その実装例をご説明します。