デベロッパーズコーナー:DOMプログラミング講座 II(4)
2001年08月22日作成
第2回:サンプルで理解するDOMの利用
竹内 理
目次<全7ページ>
3.準備
4.サンプルで使用するXMLファイルについて
7.おわりに
|
サンプルで使用するXMLファイルについて
ここでXMLで記述されたデータセットファイルの内容について説明しておきます。ダウンロードしたdataset.xmlファイルを開いてください。
<?xml version="1.0" encoding="UTF-8"?> <dataset> <table name="Person"> <row Name="'O.Wilde'" Age="67"/> <row Name="'C.Dickenz'" Age="78"/> </table> </dataset> |
リスト1.データセットファイル(dataset.xml)
最上位の要素は"dataset"です。その子要素としてひとつ以上の"table"要素が存在します。これはRDBのひとつのテーブルに挿入するデータをまとめた要素です。属性"name"はデータを挿入する先のテーブルの名前を記入しておきます。リスト2の例では、"table"要素の属性"name"は"Person"テーブルにデータを挿入することを示しています。"table"要素は複数存在することが出来ます。つまり、ひとつのデータセットファイルに必要なだけデータを記述しておけば一度に複数のテーブルにデータを挿入することが出来ます。
"table"要素は子要素としてひとつ以上の"row"要素を持ちます。"row"要素はRDBのテーブルの一つの行に挿入するデータを保持しています。具体的には挿入先のテーブルのフィールド名を属性名として持ち、それぞれの属性値を実際のデータとして挿入します。リスト2の例ですと、一つ目の"row"要素は"Person"テーブルの"Name"フィールドに'O.Wilde'、"Age"フィールドに67というデータを挿入します。数値データ以外のデータにはシングルクォーテションを付けておくことにします。
では例えばリスト2から、生成されるSQL文はどのようなものでしょうか。setDataSet()メソッドではひとつの"row"要素についてひとつのSQLのInsert文を生成します。一つ目の"row"要素から生成されるのは次のSQL文です。
INSERT INTO Person (Name,Age) VALUES ('O.Wilde',67); |
サンプルコードの構成
次に、サンプルコードの構成を説明しておきましょう。XML2DBモジュールはJavaのクラスとして実装します。では、XML2DBクラスのソースを開いてください(XML2DB.java)。
このクラスは以下のようなメソッドを用意しています。それぞれのメソッドの名前と機能について説明します。
メソッド名
|
機能
|
XML2DB | コンストラクタ。今回は特に処理は記述しません。 |
setDataSet | DOMを利用して、データファイルを解析しRDBにデータを挿入するSQL文を生成する。最後にdoInsert関数を呼んでRDBにデータを格納する。 |
doInsert | setDataSet関数で生成したSQL文を実行する。 |
表3.DB2XMLの構成
XML2DBを使用してリレーショナルデータベースから取得したデータをXMLに変換する処理を行うには次のようなコードを記述します。
XML2DB x2d = new XML2DB();//XML2DBオブジェクトを生成する。 x2d.setDataSet();//データファイルを解析し、RDBにデータを格納する。 |
まず、XML2DBオブジェクトを生成します。次にsetDataSet()ではRDBにデータセットファイルを解析し、内部でdoInesrt()を呼び出してRDBにデータを挿入します。
今回は表2の3つのメソッドのうち、DOMを利用するsetDataSet()メソッドに注目し、詳しく内容を見ていきます。その他のメソッドに関してはDOMとの関わりが薄いのでこのセクションでの説明はしません。
setDataSet()は前述のとおりデータセットファイルを解析して、データベースに格納するデータを取得し、それらのデータをデータベースに挿入するためのSQL文を生成します。XMLで記述されたデータセットファイルを解析する際にDOMを利用するわけです。