目次へ

4. データセット(1)

4章では、FlatXmlDataSetについて説明します。

4.1 IDataSet

IDataSetは、テーブルデータの集合を表します。IDataSetを使用することにより、テーブルデータの比較が簡単にできるようになります。IDataSetはインタフェースです。DBUnitでは、IDataSetを実装する様々なクラスを用意します。Techscoreでは、以下のDataSetについて紹介していきます。

  • FlatXmlDataSet
  • ReplacementDataSet
  • CompositeDataSet
  • QueryDataSet
  • XlsDataSet

4.2 FlatXmlDataSet

まずは2章、3章でも使用したFlatXmlDataSetです。FlatXmlDataSetはXML形式のデータを読み込んでデータセットにしたり、データセットをXML形式で出力するクラスです。FlatXmlDataSetで読み込み/書き込み可能なXMLのフォーマットは以下の通りです。

<dataset>
   <(テーブル名)(カラム名)="(値)"  ..../>
   <(テーブル名)(カラム名)="(値)"  ..../>
</dataset>

例えば、以下のようなXMLファイルです。

sample_data.xml
 <dataset>
   <TEST_TABLE COL0="row 0 col 0" COL1="row 0 col 1" COL2="row 0 col 2"/>
   <TEST_TABLE COL1="row 1 col 1"/>
   <SECOND_TABLE COL0="row 0 col 0" COL1="row 0 col 1" />
</dataset>

ひとつのXMLで複数のテーブルのデータを表すことができます。 これは、ひとつのFlatXmlDataSetインスタンスが複数のテーブルのデータを表すことができる、ということです。 例えば、sample_data.xmlで表されるデータセットは、TEST_TABLE、SECOND_TABLE、EMPTY_TABLEの3つのテーブルのデータを表します。

FlatXmlDataSetは、TEST_TABLEテーブルがどのようなカラムを持つかを「最初のTEST_TABLE要素の属性」で判断します。 例えば、sample_data.xml からは、TEST_TABLE には COL0,COL1,COL2 の3つのカラムを持つと判断されます。

 最初の要素に指定されている属性を指定しない場合、対応するカラムにはnull が設定されているものとします。例えば、以下の部分です。

   <TEST_TABLE COL0="row 0 col 0" COL1="row 0 col 1" COL2="row 0 col 2"/>
   <TEST_TABLE COL1="row 1 col 1"/>

2行目は、COL0、COL2の2つの属性が指定されていません。よってこの行は、COL0=COL2=null、COL1="row 1 col 1"というデータを表します。

FlatXmlDataSetでは、コンストラクタにデータを表すXMLを指定します。XMLは、FileやInputStreamなど、いろいろな形式で指定することが可能です。


 FlatXmlDataSet(java.io.File xmlFile) 
 FlatXmlDataSet(org.xml.sax.InputSource source) 
 FlatXmlDataSet(java.io.InputStream xmlStream) 
 FlatXmlDataSet(java.io.Reader xmlReader) 
 FlatXmlDataSet(java.net.URL xmlUrl)
		

また、IDataSetをXML形式で出力するには、FlatXmlDataSetのwrite static メソッドを使用します。

public static void write(IDataSet dataSet,java.io.OutputStream out)
public static void write(IDataSet dataSet,java.io.Writer writer)
public static void write(IDataSet dataSet,java.io.Writer writer,java.lang.String encoding)

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ
Loading