Accessで書き出したXMLスキーマをJavaのクラスに変換する
「MySQLのテーブルをJavaのクラスに変換し、DBの内容をXMLへ読み書き 」計画
(1)MySQLをインストール(あたりまえっす)
(2)MySQLをGUIツールを使って、テーブル作成、データ追加
(3)Accessで読み込めるよう、MySQLをODBC接続
(4)Accessで読み込み、XML&XSD出力
4-1、AccessからMySQLのデータベースをODBC接続する
4-2、AccessのデータベースをXML&XSD出力する
←いまここ
(5)xjc.exeをつかって、XSDから、Javaのクラスを作成
(6)JavaからMySQLを扱えるようJDBC接続
(7)プログラム作成
で、XMLスキーマを作ったので、
今日は、「(5)xjc.exeをつかって、XSDから、Javaのクラスを作成」です。
ただ、すでに
DTDからJAXBを使って、JAVAのクラスをつくるまで
http://blog.goo.ne.jp/xmldtp/e/5978535d27dec44998df7acdd74d671c
で、DTDでは、やっています。XSDでは、引数が変わるだけです。
なんですが、後々の作業のために、やっておいたほうがいいことがあるので、それも今回は付け加えます。
■前提条件
・XMLスキーマを用意する
作ってない人は
Accessから、XMLとXMLスキーマ(XSD)を書き出す。
http://blog.goo.ne.jp/xmldtp/e/c5d1b726adc95a6daf9221cfcb1cc160
を参照。
そのXSDファイル、今回はCドライブに/tempというフォルダを作成し、そこにおきます(/temp/dept.xsd)。
・Javaホームのbinに、xjc.exeというファイルがある
C:/Program Files/Java/jdk1.6.0_12/binなど、JavaのHOMEに、xjc.exeというファイルがあることが前提です。
このコマンドを使いますので。
ない人は
DTDからJAXBを使って、JAVAのクラスをつくるまで
http://blog.goo.ne.jp/xmldtp/e/5978535d27dec44998df7acdd74d671c
を参照。
■実行!
では、実行します。
(1)スタート→すべてのプログラム→アクセサリ→コマンドプロンプト
などをつかって、とにかく、「コマンドプロンプト」を出してください。
(2)JAVAのホームの下のbinに、cdしてください
cd C:/Program Files/Java/jdk1.6.0_12/bin
など。
なお、前にも書きましたが、XSDファイル(今回はdept.xsdを使います)は、/tempにコピー
(3)コマンドプロンプトから、
xjc /temp/dept.xsd -d /temp
と入力、実行します(DTDのときは、-dtdとつけましたが、入力ファイルはXMLスキーマがデフォルトなので、XMLスキーマの場合は、そのままファイル名を入力してかまいません。また、/でなく、半角円マークでももちろんOKです)
そうすると、コンソール画面に、
parsing a schema...
compiling a schema...
generated\Dataroot.java
generated\Dept.java
generated\ObjectFactory.java
とでて、/tempフォルダの下にgeneratedというフォルダができます。その下にJavaのクラスがあります。
■後々の作業のために
で、これでできたのですが、後々の作業のために、しておいたことがいいことがあるので、
それをついでにしてしまいます。
このままだと、テーブル1つだけしか使わないときはいいのですが、
複数テーブル作ると、こまります。
みんなgeneratedの下にはいってしまい、ObjectFactoryが上書きされます。
そこで、パッケージ名を変えます。
そのため、
・まず、フォルダの名前を、generatedから好きな名前に変えます。
今回は、テーブル名にします。なので、deptに変えます。
・中にあるそれぞれのファイル
Dataroot.java,
Dept.java,
ObjectFactory.java
をひらき、
package generated;
という行を探して、そこのgeneratedを先ほどつけた名前、今回の場合はdeptなので、
package dept;
という行に書き改め、保存します。
これだけです。くれぐれも、「generated」を「すべて置換」”しないように”してください
(generatedという項目があるので、これまで変わってしまいます)
こんなかんじです。
次回からいよいよ、プログラムに入ります。
。。って、その前に下準備がいるんだった・・・